]> git.saurik.com Git - bison.git/blobdiff - src/getargs.c
* doc/bison.texinfo: ANSIfy the examples.
[bison.git] / src / getargs.c
index 19042c608418142d8a353d23cc51502a9bba6748..890179ec5b5c3f5a72ad95c2330bc43cbb3fad8b 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 "files.h"
 #include "getargs.h"
 
 #include "files.h"
 #include "getargs.h"
 
-char *spec_file_prefix; /* for -b. */
-char *spec_name_prefix; /* for -p.  */
-
 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 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;
+char *skeleton = 0;
 int token_table_flag = 0;
 int verbose_flag = 0;
 int statistics_flag = 0;
 int yacc_flag = 0;     /* for -y */
 
 extern char *program_name;
 int token_table_flag = 0;
 int verbose_flag = 0;
 int statistics_flag = 0;
 int yacc_flag = 0;     /* for -y */
 
 extern char *program_name;
-
+const char *shortopts = "yvdhrltknVo:b:p:S:";
 static struct option longopts[] =
 {
 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},
+  /* Operation modes. */
+  {"help",             no_argument,    0, 'h'},
+  {"version",          no_argument,    0, 'V'},
+  {"yacc",             no_argument,    0, 'y'},
+  {"fixed-output-files",no_argument,   0, 'y'},
+
+  /* Parser. */
+  {"skeleton",         required_argument,      0, 'S'},
+  {"debug",            no_argument,            0, 'd'},
+  {"locations",                no_argument,    &locations_flag, 1},
+  /* was 'a';  apparently unused -wjh */
+  {"name-prefix",      required_argument,      0, 'p'},
+  {"no-lines",         no_argument,            0, 'l'},
+  {"no-parser",                no_argument,            0, 'n'},
+  {"raw",              no_argument,            0, 'r'},
+  {"token-table",      no_argument,            0, 'k'},
+
+  /* Output. */
+  {"defines",          no_argument,            0, 'd'},
+  {"verbose",          no_argument,            0, 'v'},
+  {"file-prefix",      required_argument,      0, 'b'},
+  {"output-file",      required_argument,      0, 'o'},
+
+  /* Hidden. */
+  {"statistics",       no_argument,    &statistics_flag, 1},
   {0, 0, 0, 0}
 };
 
   {0, 0, 0, 0}
 };
 
@@ -94,6 +100,7 @@ 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\
   -t, --debug                instrument the parser for debugging\n\
       --locations            enable locations computation\n\
   -p, --name-prefix=PREFIX   prepend PREFIX to the external symbols\n\
@@ -132,7 +139,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 (_("\
@@ -152,73 +159,74 @@ 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 'v':
+       verbose_flag = 1;
+       break;
+
+      case 'S':
+       skeleton = optarg;
+       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);
+      }
 
   if (optind == argc)
     {
 
   if (optind == argc)
     {