]> git.saurik.com Git - bison.git/blobdiff - src/options.c
More ignores.
[bison.git] / src / options.c
index 71a450532a6fd4b70568fe4982f7e67b5580b278..37963cd4d6c8800515b3809781fff86ef5037e67 100644 (file)
@@ -24,6 +24,7 @@
 #include "getopt.h"
 #include "getargs.h"
 #include "gram.h"
 #include "getopt.h"
 #include "getargs.h"
 #include "gram.h"
+#include "symtab.h"
 #include "lex.h"
 #include "options.h"
 
 #include "lex.h"
 #include "options.h"
 
@@ -44,7 +45,7 @@ const struct option_table_struct option_table[] =
   /* Operation modes. */
   {opt_cmd_line, "help",      no_argument,                0,         0,   'h'},
   {opt_cmd_line, "version",   no_argument,                0,         0,   'V'},
   /* Operation modes. */
   {opt_cmd_line, "help",      no_argument,                0,         0,   'h'},
   {opt_cmd_line, "version",   no_argument,                0,         0,   'V'},
-  
+
   /* Parser. */
   /* was 'a';  apparently unused -wjh */
   {opt_cmd_line, "name-prefix",        required_argument,         0,         0,   'p'},
   /* Parser. */
   /* was 'a';  apparently unused -wjh */
   {opt_cmd_line, "name-prefix",        required_argument,         0,         0,   'p'},
@@ -52,7 +53,7 @@ const struct option_table_struct option_table[] =
   /* Output. */
   {opt_cmd_line, "file-prefix",        required_argument,         0,         0,   'b'},
   {opt_cmd_line, "output-file",        required_argument,         0,         0,   'o'},
   /* Output. */
   {opt_cmd_line, "file-prefix",        required_argument,         0,         0,   'b'},
   {opt_cmd_line, "output-file",        required_argument,         0,         0,   'o'},
-  {opt_cmd_line, "graph",     no_argument,                0,         0,   'g'},
+  {opt_cmd_line, "graph",      optional_argument,         0,         0,   'g'},
 
   /* Hidden. */
   {opt_cmd_line, "statistics", no_argument, &statistics_flag,        0,     1},
 
   /* Hidden. */
   {opt_cmd_line, "statistics", no_argument, &statistics_flag,        0,     1},
@@ -85,22 +86,20 @@ const struct option_table_struct option_table[] =
   {opt_both, "file-prefix", required_argument,&spec_file_prefix,tok_setopt,'b'},
   {opt_both, "name-prefix", required_argument,&spec_name_prefix,tok_setopt,'p'},
 #endif
   {opt_both, "file-prefix", required_argument,&spec_file_prefix,tok_setopt,'b'},
   {opt_both, "name-prefix", required_argument,&spec_name_prefix,tok_setopt,'p'},
 #endif
-  {opt_percent, "header_extension",    0,              NULL, tok_hdrext,    0},
-  {opt_percent, "source_extension",    0,              NULL, tok_srcext,    0},
   {opt_percent, "define",              0,              NULL, tok_define,    0},
   {opt_percent, "define",              0,              NULL, tok_define,    0},
-  {opt_percent, "semantic_parser",     0,  &semantic_parser, tok_noop,      0},
-  {opt_percent, "pure_parser",         0,      &pure_parser, tok_noop,      0},
+  {opt_percent, "semantic-parser",     0,  &semantic_parser, tok_noop,      0},
+  {opt_percent, "pure-parser",         0,      &pure_parser, tok_noop,      0},
 
   /*
    * Percent and command line declarations.
    */
 
   /* FIXME Usually option use `-' to separe words on command line
 
   /*
    * Percent and command line declarations.
    */
 
   /* FIXME Usually option use `-' to separe words on command line
-     and `_' for percent option.  But here the separator are always 
+     and `_' for percent option.  But here the separator are always
      the same, the char `-'.  */
 
   /* Output.  */
      the same, the char `-'.  */
 
   /* Output.  */
-  {opt_both, "defines",               no_argument,   &defines_flag, tok_noop,     'd'},
+  {opt_both, "defines",               optional_argument,   &defines_flag, tok_noop,       'd'},
   {opt_both, "verbose",               no_argument,   &verbose_flag, tok_noop,     'v'},
 
   /* Operation modes.  */
   {opt_both, "verbose",               no_argument,   &verbose_flag, tok_noop,     'v'},
 
   /* Operation modes.  */
@@ -108,7 +107,7 @@ const struct option_table_struct option_table[] =
   {opt_both, "yacc",          no_argument,      &yacc_flag, tok_noop,     'y'},
 
   /* Parser.  */
   {opt_both, "yacc",          no_argument,      &yacc_flag, tok_noop,     'y'},
 
   /* Parser.  */
-  {opt_both, "debug",         no_argument,     &debug_flag, tok_noop,     'd'},
+  {opt_both, "debug",         no_argument,     &debug_flag, tok_noop,     't'},
   {opt_both, "locations",      no_argument, &locations_flag, tok_noop,       1},
   {opt_both, "no-lines",       no_argument,  &no_lines_flag, tok_noop,    'l'},
   {opt_both, "no-parser",      no_argument, &no_parser_flag, tok_noop,    'n'},
   {opt_both, "locations",      no_argument, &locations_flag, tok_noop,       1},
   {opt_both, "no-lines",       no_argument,  &no_lines_flag, tok_noop,    'l'},
   {opt_both, "no-parser",      no_argument, &no_parser_flag, tok_noop,    'n'},
@@ -143,7 +142,14 @@ create_long_option_table ()
        /* Copy the struct information in the longoptions.  */
        longopts[j].name = option_table[i].name;
        longopts[j].has_arg = option_table[i].has_arg;
        /* Copy the struct information in the longoptions.  */
        longopts[j].name = option_table[i].name;
        longopts[j].has_arg = option_table[i].has_arg;
-       longopts[j].flag = option_table[i].set_flag;
+       /* When an options is declared having 'optional_argument' and
+          a flag is specified to be set, the option is skipped on 
+          command line. So we never use a flag when a command line
+          option is declared 'optional_argument.  */
+       if (longopts[j].has_arg == optional_argument)
+         longopts[j].flag = NULL;
+       else
+         longopts[j].flag = option_table[i].set_flag;
        longopts[j++].val = option_table[i].val;
       }
   longopts[number_options].name = NULL;
        longopts[j++].val = option_table[i].val;
       }
   longopts[number_options].name = NULL;