]> git.saurik.com Git - bison.git/blobdiff - src/getargs.c
Fix the previous test.
[bison.git] / src / getargs.c
index 19042c608418142d8a353d23cc51502a9bba6748..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.  */
+#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 debug_flag = 0;
 int defines_flag = 0;
 int locations_flag = 0;
 int no_lines_flag = 0;
 int no_parser_flag = 0;
-int raw_flag = 0;
 int token_table_flag = 0;
 int verbose_flag = 0;
 int token_table_flag = 0;
 int verbose_flag = 0;
-int statistics_flag = 0;
 int yacc_flag = 0;     /* for -y */
 int yacc_flag = 0;     /* for -y */
+int graph_flag = 0;
+int trace_flag = 0;
 
 
-extern char *program_name;
+const char *skeleton = NULL;
+const char *include = NULL;
 
 
-static struct option longopts[] =
-{
-  {"debug", 0, &debug_flag, 1},
-  {"defines", 0, &defines_flag, 1},
-  {"file-prefix", 1, 0, 'b'},
-  {"fixed-output-files", 0, &yacc_flag, 1},
-  {"help", 0, 0, 'h'},
-  {"name-prefix", 1, 0, 'p'}, /* was 'a';  apparently unused -wjh */
-  {"locations", 0, &locations_flag, 1},
-  {"no-lines", 0, &no_lines_flag, 1},
-  {"no-parser", 0, &no_parser_flag, 1},
-  {"output", 1, 0, 'o'},
-  {"output-file", 1, 0, 'o'},
-  {"raw", 0, &raw_flag, 1},
-  {"statistics", 0, &statistics_flag, 1},
-  {"token-table", 0, &token_table_flag, 1},
-  {"verbose", 0, &verbose_flag, 1},
-  {"version", 0, 0, 'V'},
-  {"yacc", 0, &yacc_flag, 1},
-  {0, 0, 0, 0}
-};
+extern char *program_name;
 
 /*---------------------------.
 | Display the help message.  |
 
 /*---------------------------.
 | Display the help message.  |
@@ -94,12 +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\
       --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\
   -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\
-  -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);
@@ -109,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 (_("\
@@ -132,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 (_("\
@@ -147,78 +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[])
 {
   int c;
 
 void
 getargs (int argc, char *argv[])
 {
   int c;
 
-  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':
-         yacc_flag = 1;
-         break;
-
-       case 'h':
-         usage (stdout);
-         exit (0);
-
-       case 'V':
-         version (stdout);
-         exit (0);
-
-       case 'v':
-         verbose_flag = 1;
-         break;
-
-       case 'd':
-         defines_flag = 1;
-         break;
-
-       case 'l':
-         no_lines_flag = 1;
-         break;
-
-       case 'k':
-         token_table_flag = 1;
-         break;
-
-       case 'r':
-         raw_flag = 1;
-         break;
-
-       case 'n':
-         no_parser_flag = 1;
-         break;
-
-       case 't':
-         debug_flag = 1;
-         break;
-
-       case 'o':
-         spec_outfile = optarg;
-         break;
-
-       case 'b':
-         spec_file_prefix = optarg;
-         break;
-
-       case 'p':
-         spec_name_prefix = optarg;
-         break;
-
-       default:
-         fprintf (stderr, _("Try `%s --help' for more information.\n"),
-                  program_name);
-         exit (1);
-       }
-    }
+  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)
     {