]> git.saurik.com Git - bison.git/blobdiff - src/getargs.c
Fix the previous test.
[bison.git] / src / getargs.c
index fd26b78c8c6664fb7433f5d43db3b81d304efe8c..3a74ea1dc74405310d2993b5596d67a241495be3 100644 (file)
@@ -1,5 +1,5 @@
 /* Parse command line arguments for bison.
 /* Parse command line arguments for bison.
-   Copyright (C) 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.
+   Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 #include "getopt.h"
 #include "system.h"
 #include "files.h"
 #include "getopt.h"
 #include "system.h"
 #include "files.h"
+#include "complain.h"
 #include "getargs.h"
 #include "getargs.h"
-
-char *spec_file_prefix; /* for -b. */
-char *spec_name_prefix; /* for -p.  */
-
-int debugflag = 0;
-int definesflag = 0;
-int nolinesflag = 0;
-int noparserflag = 0;
-int rawtoknumflag = 0;
-int toknumflag = 0;
-int verboseflag = 0;
-int statisticsflag = 0;
-int fixed_outfiles = 0;/* for -y */
+#include "xalloc.h"
+#include "options.h"
+
+int debug_flag = 0;
+int defines_flag = 0;
+int locations_flag = 0;
+int no_lines_flag = 0;
+int no_parser_flag = 0;
+int token_table_flag = 0;
+int verbose_flag = 0;
+int yacc_flag = 0;     /* for -y */
+int graph_flag = 0;
+int trace_flag = 0;
+
+const char *skeleton = NULL;
+const char *include = NULL;
 
 extern char *program_name;
 
 
 extern char *program_name;
 
-static struct option longopts[] =
-{
-  {"debug", 0, &debugflag, 1},
-  {"defines", 0, &definesflag, 1},
-  {"file-prefix", 1, 0, 'b'},
-  {"fixed-output-files", 0, &fixed_outfiles, 1},
-  {"help", 0, 0, 'h'},
-  {"name-prefix", 1, 0, 'p'}, /* was 'a';  apparently unused -wjh */
-  {"no-lines", 0, &nolinesflag, 1},
-  {"no-parser", 0, &noparserflag, 1},
-  {"output", 1, 0, 'o'},
-  {"output-file", 1, 0, 'o'},
-  {"raw", 0, &rawtoknumflag, 1},
-  {"token-table", 0, &toknumflag, 1},
-  {"verbose", 0, &verboseflag, 1},
-  {"version", 0, 0, 'V'},
-  {"yacc", 0, &fixed_outfiles, 1},
-  {"statistics", 0, &statisticsflag, 1},
-  {0, 0, 0, 0}
-};
-
 /*---------------------------.
 | Display the help message.  |
 `---------------------------*/
 /*---------------------------.
 | Display the help message.  |
 `---------------------------*/
@@ -92,11 +75,12 @@ Operation modes:\n\
 
   fputs (_("\
 Parser:\n\
 
   fputs (_("\
 Parser:\n\
+  -S, --skeleton=FILE        specify the skeleton to use\n\
   -t, --debug                instrument the parser for debugging\n\
   -t, --debug                instrument the parser for debugging\n\
+      --locations            enable locations computation\n\
   -p, --name-prefix=PREFIX   prepend PREFIX to the external symbols\n\
   -l, --no-lines             don't generate `#line' directives\n\
   -n, --no-parser            generate the tables only\n\
   -p, --name-prefix=PREFIX   prepend PREFIX to the external symbols\n\
   -l, --no-lines             don't generate `#line' directives\n\
   -n, --no-parser            generate the tables only\n\
-  -r, --raw                  number the tokens from 3\n\
   -k, --token-table          include a table of token names\n\
 "), stream);
   putc ('\n', stream);
   -k, --token-table          include a table of token names\n\
 "), stream);
   putc ('\n', stream);
@@ -106,7 +90,9 @@ Output:\n\
   -d, --defines              also produce a header file\n\
   -v, --verbose              also produce an explanation of the automaton\n\
   -b, --file-prefix=PREFIX   specify a PREFIX for output files\n\
   -d, --defines              also produce a header file\n\
   -v, --verbose              also produce an explanation of the automaton\n\
   -b, --file-prefix=PREFIX   specify a PREFIX for output files\n\
-  -o, --output-file=FILE     leave output to FILE\n"), stream);
+  -o, --output=FILE          leave output to FILE\n\
+  -g, --graph                also produce a VCG description of the automaton\n\
+"), stream);
   putc ('\n', stream);
 
   fputs (_("\
   putc ('\n', stream);
 
   fputs (_("\
@@ -129,7 +115,7 @@ bison (GNU Bison) %s"), VERSION);
   putc ('\n', stream);
 
   fputs (_("\
   putc ('\n', stream);
 
   fputs (_("\
-Copyright (C) 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.\n"),
+Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"),
         stream);
 
   fputs (_("\
         stream);
 
   fputs (_("\
@@ -144,85 +130,103 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
 | Process the options.  |
 `----------------------*/
 
 | Process the options.  |
 `----------------------*/
 
+/* 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
+
 void
 getargs (int argc, char *argv[])
 {
 void
 getargs (int argc, char *argv[])
 {
-  register int c;
-
-  verboseflag = 0;
-  definesflag = 0;
-  debugflag = 0;
-  noparserflag = 0;
-  rawtoknumflag = 0;
-  toknumflag = 0;
-  fixed_outfiles = 0;
-
-  while ((c = getopt_long (argc, argv, "yvdhrltknVo:b:p:", longopts, (int *)0))
-        != EOF)
-    {
-      switch (c)
-       {
-       case 0:
-         /* Certain long options cause getopt_long to return 0.  */
-         break;
-
-       case 'y':
-         fixed_outfiles = 1;
-         break;
-
-       case 'h':
-         usage (stdout);
-         exit (0);
-
-       case 'V':
-         version (stdout);
-         exit (0);
-
-       case 'v':
-         verboseflag = 1;
-         break;
-
-       case 'd':
-         definesflag = 1;
-         break;
-
-       case 'l':
-         nolinesflag = 1;
-         break;
-
-       case 'k':
-         toknumflag = 1;
-         break;
-
-       case 'r':
-         rawtoknumflag = 1;
-         break;
-
-       case 'n':
-         noparserflag = 1;
-         break;
-
-       case 't':
-         debugflag = 1;
-         break;
-
-       case 'o':
-         spec_outfile = optarg;
-         break;
-
-       case 'b':
-         spec_file_prefix = optarg;
-         break;
-
-       case 'p':
-         spec_name_prefix = optarg;
-         break;
-
-       default:
-         usage (stderr);
-         exit (1);
-       }
-    }
+  int c;
+
+  struct option *longopts = long_option_table_new ();
+  while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != EOF)
+    switch (c)
+      {
+      case 0:
+       /* Certain long options cause getopt_long to return 0.  */
+       break;
+
+      case 'y':
+       yacc_flag = 1;
+       break;
+
+      case 'h':
+       usage (stdout);
+       exit (0);
+
+      case 'V':
+       version (stdout);
+       exit (0);
+
+      case 'g':
+       /* Here, the -g and --graph=FILE options are differentiated.  */
+       graph_flag = 1;
+       spec_graph_file = AS_FILE_NAME (optarg);
+       break;
+
+      case 'v':
+       verbose_flag = 1;
+       break;
+
+      case 'S':
+       skeleton = AS_FILE_NAME (optarg);
+       break;
+
+      case 'I':
+       include = AS_FILE_NAME (optarg);
+       break;
+
+      case 'd':
+       /* Here, the -d and --defines options are differentiated.  */
+       defines_flag = 1;
+       if (optarg)
+         spec_defines_file = AS_FILE_NAME (optarg);
+       break;
+
+      case 'l':
+       no_lines_flag = 1;
+       break;
+
+      case 'k':
+       token_table_flag = 1;
+       break;
+
+      case 'r':
+       fatal (_("`%s' is no longer supported"), "--raw");
+       break;
+
+      case 'n':
+       no_parser_flag = 1;
+       break;
+
+      case 't':
+       debug_flag = 1;
+       break;
+
+      case 'o':
+       spec_outfile = AS_FILE_NAME (optarg);
+       break;
+
+      case 'b':
+       spec_file_prefix = AS_FILE_NAME (optarg);
+       break;
+
+      case 'p':
+       spec_name_prefix = optarg;
+       break;
+
+      default:
+       fprintf (stderr, _("Try `%s --help' for more information.\n"),
+                program_name);
+       exit (1);
+      }
+
+  free (longopts);
 
   if (optind == argc)
     {
 
   if (optind == argc)
     {