From 8e55b3aac25caf25d6976a455729aef3f4f20f80 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Sat, 8 Mar 2008 20:49:57 +0000 Subject: [PATCH] * NEWS (2.3a+): Mention that -g now takes an argument. * doc/bison.texinfo (Bison Options): Reword -W entry a little for consistency. Update the -g and -x entries now that they take arguments. Use brackets to indicate optional arguments. * src/getargs.c (usage): Explain the relationship between arguments of long and short options more completely. Document --defines and -d separately since the former takes an argument but, for POSIX Yacc, the latter does not. (short_options): Let -W take an optional argument like --warnings. (getargs): Sort cases. --- ChangeLog | 13 +++++++ NEWS | 3 +- doc/bison.1 | 8 +++-- doc/bison.texinfo | 46 ++++++++++++------------ src/getargs.c | 90 +++++++++++++++++++++++++---------------------- 5 files changed, 90 insertions(+), 70 deletions(-) diff --git a/ChangeLog b/ChangeLog index 42fd54c0..79be1a06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-03-08 Joel E. Denny + + * NEWS (2.3a+): Mention that -g now takes an argument. + * doc/bison.texinfo (Bison Options): Reword -W entry a little for + consistency. Update the -g and -x entries now that they take + arguments. Use brackets to indicate optional arguments. + * src/getargs.c (usage): Explain the relationship between arguments of + long and short options more completely. Document --defines and -d + separately since the former takes an argument but, for POSIX Yacc, the + latter does not. + (short_options): Let -W take an optional argument like --warnings. + (getargs): Sort cases. + 2008-02-28 Akim Demaille * doc/bison.texinfo: Fix a few typos. diff --git a/NEWS b/NEWS index 17745449..1e1d0ae2 100644 --- a/NEWS +++ b/NEWS @@ -32,7 +32,8 @@ Changes in version 2.3a+ (????-??-??): feedback will help to stabilize it. * The -g and --graph options now output graphs in Graphviz DOT format, - not VCG format. + not VCG format. Like --graph, -g now also takes an optional FILE argument + and thus cannot be bundled with other short options. * Java diff --git a/doc/bison.1 b/doc/bison.1 index e46d1ea6..9fb8676c 100644 --- a/doc/bison.1 +++ b/doc/bison.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. -.TH BISON "1" "February 2008" "bison 2.3a+" "User Commands" +.TH BISON "1" "March 2008" "bison 2.3a+" "User Commands" .SH NAME bison \- GNU Project parser generator (yacc replacement) .SH SYNOPSIS @@ -61,6 +61,7 @@ connect the option name and the argument with Generate LALR(1) and GLR parsers. .PP Mandatory arguments to long options are mandatory for short options too. +The same is true for optional arguments. .SS "Operation modes:" .TP \fB\-h\fR, \fB\-\-help\fR @@ -104,9 +105,12 @@ don't generate `#line' directives include a table of token names .SS "Output:" .TP -\fB\-d\fR, \fB\-\-defines\fR[=\fIFILE\fR] +\fB\-\-defines\fR[=\fIFILE\fR] also produce a header file .TP +\fB\-d\fR +likewise but cannot specify FILE (for POSIX Yacc) +.TP \fB\-r\fR, \fB\-\-report\fR=\fITHINGS\fR also produce details on the automaton .TP diff --git a/doc/bison.texinfo b/doc/bison.texinfo index cf775a93..b6a98f9d 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -7782,16 +7782,16 @@ Output warnings falling in @var{category}. @var{category} can be one of: @table @code @item midrule-values -Warn about about mid-rule values that are set but not used within any of -the actions of the parent rule. For example, Bison warns about unused -@code{$2} in: +Warn about mid-rule values that are set but not used within any of the actions +of the parent rule. +For example, warn about unused @code{$2} in: @example exp: '1' @{ $$ = 1; @} '+' exp @{ $$ = $1 + $4; @}; @end example -It also warns about mid-rule values that are used but not set. For -example, Bison warns about unset @code{$$} in the mid-rule action in: +Also warn about mid-rule values that are used but not set. +For example, warn about unset @code{$$} in the mid-rule action in: @example exp: '1' @{ $1 = 1; @} '+' exp @{ $$ = $2 + $4; @}; @@ -7799,18 +7799,18 @@ example, Bison warns about unset @code{$$} in the mid-rule action in: These warnings are not enabled by default since they sometimes prove to be false alarms in existing grammars employing the Yacc constructs -@code{$0} or @code{$-@var{b}} (where @var{n} is some positive integer). +@code{$0} or @code{$-@var{n}} (where @var{n} is some positive integer). @item yacc Incompatibilities with @acronym{POSIX} Yacc. @item all -all the warnings +All the warnings. @item none -turn off all the warnings +Turn off all the warnings. @item error -treat warnings as errors +Treat warnings as errors. @end table A category can be turned off by prefixing its name with @samp{no-}. For @@ -7876,14 +7876,15 @@ Pretend that @code{%token-table} was specified. @xref{Decl Summary}. Adjust the output: @table @option -@item -d -@itemx --defines +@item --defines[=@var{file}] Pretend that @code{%defines} was specified, i.e., write an extra output file containing macro definitions for the token type names defined in the grammar, as well as a few other declarations. @xref{Decl Summary}. -@item --defines=@var{defines-file} -Same as above, but save in the file @var{defines-file}. +@item -d +This is the same as @code{--defines} except @code{-d} does not accept a +@var{file} argument since POSIX Yacc requires that @code{-d} can be bundled +with other short options. @item -b @var{file-prefix} @itemx --file-prefix=@var{prefix} @@ -7925,22 +7926,19 @@ Specify the @var{file} for the parser file. The other output files' names are constructed from @var{file} as described under the @samp{-v} and @samp{-d} options. -@item -g +@item -g[@var{file}] +@itemx --graph[=@var{file}] Output a graphical representation of the @acronym{LALR}(1) grammar automaton computed by Bison, in @uref{http://www.graphviz.org/, Graphviz} @uref{http://www.graphviz.org/doc/info/lang.html, @acronym{DOT}} format. -If the grammar file is @file{foo.y}, the output file will -be @file{foo.dot}. - -@item --graph=@var{graph-file} -The behavior of @var{--graph} is the same as @samp{-g}. The only -difference is that it has an optional argument which is the name of -the output graph file. +@code{@var{file}} is optional. +If omitted and the grammar file is @file{foo.y}, the output file will be +@file{foo.dot}. -@item -x -@itemx --xml=@var{file} +@item -x[@var{file}] +@itemx --xml[=@var{file}] Output an XML report of the @acronym{LALR}(1) automaton computed by Bison. -@code{=@var{file}} is optional. +@code{@var{file}} is optional. If omitted and the grammar file is @file{foo.y}, the output file will be @file{foo.xml}. (The current XML schema is experimental and may evolve. diff --git a/src/getargs.c b/src/getargs.c index 77f147d3..92846b64 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -253,6 +253,9 @@ Generate LALR(1) and GLR parsers.\n\ fputs (_("\ Mandatory arguments to long options are mandatory for short options too.\n\ +"), stdout); + fputs (_("\ +The same is true for optional arguments.\n\ "), stdout); fputs (_("\ @@ -279,9 +282,12 @@ Parser:\n\ \n\ "), stdout); + /* Keep -d and --defines separate so that ../build-aux/cross-options.pl + * won't assume that -d also takes an argument. */ fputs (_("\ Output:\n\ - -d, --defines[=FILE] also produce a header file\n\ + --defines[=FILE] also produce a header file\n\ + -d likewise but cannot specify FILE (for POSIX Yacc)\n\ -r, --report=THINGS also produce details on the automaton\n\ --report-file=FILE write report to FILE\n\ -v, --verbose same as `--report=state'\n\ @@ -410,7 +416,7 @@ static char const short_options[] = "S:" "T::" "V" - "W" + "W::" "b:" "d" "e" @@ -503,27 +509,17 @@ getargs (int argc, char *argv[]) /* Certain long options cause getopt_long to return 0. */ break; - case 'b': - spec_file_prefix = AS_FILE_NAME (optarg); - break; - - case 'g': - /* Here, the -g and --graph=FILE options are differentiated. */ - graph_flag = true; + case 'd': + /* Here, the -d and --defines options are differentiated. */ + defines_flag = true; if (optarg) - spec_graph_file = xstrdup (AS_FILE_NAME (optarg)); + spec_defines_file = xstrdup (AS_FILE_NAME (optarg)); break; - case 'x': - /* Here, the -x and --xml=FILE options are differentiated. */ - xml_flag = true; - if (optarg) - spec_xml_file = xstrdup (AS_FILE_NAME (optarg)); + case 'I': + include = AS_FILE_NAME (optarg); break; - case 'h': - usage (EXIT_SUCCESS); - case 'L': language_argmatch (optarg, 0, NULL); break; @@ -532,17 +528,34 @@ getargs (int argc, char *argv[]) skeleton_arg (AS_FILE_NAME (optarg), 0, NULL); break; - case 'I': - include = AS_FILE_NAME (optarg); + case 'T': + FLAGS_ARGMATCH (trace, optarg); break; - case 'd': - /* Here, the -d and --defines options are differentiated. */ - defines_flag = true; + case 'V': + version (); + exit (EXIT_SUCCESS); + + case 'W': if (optarg) - spec_defines_file = xstrdup (AS_FILE_NAME (optarg)); + FLAGS_ARGMATCH (warnings, optarg); + else + warnings_flag |= warnings_all; + break; + + case 'b': + spec_file_prefix = AS_FILE_NAME (optarg); + break; + + case 'g': + graph_flag = true; + if (optarg) + spec_graph_file = xstrdup (AS_FILE_NAME (optarg)); break; + case 'h': + usage (EXIT_SUCCESS); + case 'k': token_table_flag = true; break; @@ -563,35 +576,22 @@ getargs (int argc, char *argv[]) FLAGS_ARGMATCH (report, optarg); break; - case REPORT_FILE_OPTION: - spec_verbose_file = xstrdup (AS_FILE_NAME (optarg)); - break; - - case 'T': - FLAGS_ARGMATCH (trace, optarg); - break; - case 't': debug_flag = true; break; - case 'V': - version (); - exit (EXIT_SUCCESS); - case 'v': report_flag |= report_states; break; - case 'y': - yacc_flag = true; + case 'x': + xml_flag = true; + if (optarg) + spec_xml_file = xstrdup (AS_FILE_NAME (optarg)); break; - case 'W': - if (optarg) - FLAGS_ARGMATCH (warnings, optarg); - else - warnings_flag |= warnings_all; + case 'y': + yacc_flag = true; break; case LOCATIONS_OPTION: @@ -606,6 +606,10 @@ getargs (int argc, char *argv[]) printf ("%s\n", compute_pkgdatadir ()); exit (EXIT_SUCCESS); + case REPORT_FILE_OPTION: + spec_verbose_file = xstrdup (AS_FILE_NAME (optarg)); + break; + default: usage (EXIT_FAILURE); } -- 2.47.2