]> git.saurik.com Git - bison.git/blobdiff - src/getargs.c
* src/nullable.c (set_nullable): Useless rules must be skipped,
[bison.git] / src / getargs.c
index 9882af917b44f4b60af50cc4eb5adbb1f21ce692..dd5de7fd8e606ff0b4947b9ddb7ec14b62d86ed0 100644 (file)
@@ -1,5 +1,5 @@
 /* Parse command line arguments for bison.
 /* Parse command line arguments for bison.
-   Copyright 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.
 
@@ -22,6 +22,7 @@
 #include "getopt.h"
 #include "system.h"
 #include "files.h"
 #include "getopt.h"
 #include "system.h"
 #include "files.h"
+#include "complain.h"
 #include "getargs.h"
 
 int debug_flag = 0;
 #include "getargs.h"
 
 int debug_flag = 0;
@@ -29,14 +30,16 @@ int defines_flag = 0;
 int locations_flag = 0;
 int no_lines_flag = 0;
 int no_parser_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;
+
+const char *skeleton = NULL;
 
 extern char *program_name;
 
 extern char *program_name;
-const char *shortopts = "yvdhrltknVo:b:p:";
+const char *shortopts = "yvgdhrltknVo:b:p:S:";
 static struct option longopts[] =
 {
   /* Operation modes. */
 static struct option longopts[] =
 {
   /* Operation modes. */
@@ -46,6 +49,8 @@ static struct option longopts[] =
   {"fixed-output-files",no_argument,   0, 'y'},
 
   /* Parser. */
   {"fixed-output-files",no_argument,   0, 'y'},
 
   /* Parser. */
+  {"skeleton",         required_argument,      0, 'S'},
+  {"debug",            no_argument,            0, 't'},
   {"locations",                no_argument,    &locations_flag, 1},
   /* was 'a';  apparently unused -wjh */
   {"name-prefix",      required_argument,      0, 'p'},
   {"locations",                no_argument,    &locations_flag, 1},
   /* was 'a';  apparently unused -wjh */
   {"name-prefix",      required_argument,      0, 'p'},
@@ -53,16 +58,17 @@ static struct option longopts[] =
   {"no-parser",                no_argument,            0, 'n'},
   {"raw",              no_argument,            0, 'r'},
   {"token-table",      no_argument,            0, 'k'},
   {"no-parser",                no_argument,            0, 'n'},
   {"raw",              no_argument,            0, 'r'},
   {"token-table",      no_argument,            0, 'k'},
-  {"debug",            no_argument,            0, 'd'},
 
   /* Output. */
 
   /* Output. */
-  {"defines",          no_argument,            0, 'd'},
+  {"defines",          optional_argument,      0, 'd'},
   {"verbose",          no_argument,            0, 'v'},
   {"file-prefix",      required_argument,      0, 'b'},
   {"verbose",          no_argument,            0, 'v'},
   {"file-prefix",      required_argument,      0, 'b'},
+  {"output",           required_argument,      0, 'o'},
   {"output-file",      required_argument,      0, 'o'},
   {"output-file",      required_argument,      0, 'o'},
+  {"graph",            optional_argument,      0, 'g'},
 
   /* Hidden. */
 
   /* Hidden. */
-  {"statistics",       no_argument,    &statistics_flag, 1},
+  {"trace",            no_argument,    &trace_flag, 1},
   {0, 0, 0, 0}
 };
 
   {0, 0, 0, 0}
 };
 
@@ -98,12 +104,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);
@@ -113,7 +119,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 (_("\
@@ -136,7 +144,7 @@ bison (GNU Bison) %s"), VERSION);
   putc ('\n', stream);
 
   fputs (_("\
   putc ('\n', stream);
 
   fputs (_("\
-Copyright 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 (_("\
@@ -156,73 +164,82 @@ getargs (int argc, char *argv[])
 {
   int c;
 
 {
   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);
-       }
-    }
+  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 = optarg;
+       break;
+
+      case 'v':
+       verbose_flag = 1;
+       break;
+
+      case 'S':
+       skeleton = optarg;
+       break;
+
+      case 'd':
+       /* Here, the -d and --defines options are differentiated.  */
+       defines_flag = 1;
+       spec_defines_file = 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 = 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);
+      }
 
   if (optind == argc)
     {
 
   if (optind == argc)
     {