* 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-03-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * 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 <demaille@gostai.com>
* doc/bison.texinfo: Fix a few typos.
2008-02-28 Akim Demaille <demaille@gostai.com>
* doc/bison.texinfo: Fix a few typos.
feedback will help to stabilize it.
* The -g and --graph options now output graphs in Graphviz DOT format,
feedback will help to stabilize it.
* The -g and --graph options now output graphs in Graphviz DOT format,
+ not VCG format. Like --graph, -g now also takes an optional FILE argument
+ and thus cannot be bundled with other short options.
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36.
.\" 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
.SH NAME
bison \- GNU Project parser generator (yacc replacement)
.SH SYNOPSIS
Generate LALR(1) and GLR parsers.
.PP
Mandatory arguments to long options are mandatory for short options too.
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
.SS "Operation modes:"
.TP
\fB\-h\fR, \fB\-\-help\fR
include a table of token names
.SS "Output:"
.TP
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
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
\fB\-r\fR, \fB\-\-report\fR=\fITHINGS\fR
also produce details on the automaton
.TP
of:
@table @code
@item midrule-values
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
@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; @};
@example
exp: '1' @{ $1 = 1; @} '+' exp @{ $$ = $2 + $4; @};
These warnings are not enabled by default since they sometimes prove to
be false alarms in existing grammars employing the Yacc constructs
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
@item yacc
Incompatibilities with @acronym{POSIX} Yacc.
@item all
-turn off all the warnings
+Turn off all the warnings.
-treat warnings as errors
+Treat warnings as errors.
@end table
A category can be turned off by prefixing its name with @samp{no-}. For
@end table
A category can be turned off by prefixing its name with @samp{no-}. For
Adjust the output:
@table @option
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}.
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}
@item -b @var{file-prefix}
@itemx --file-prefix=@var{prefix}
The other output files' names are constructed from @var{file} as
described under the @samp{-v} and @samp{-d} options.
The other output files' names are constructed from @var{file} as
described under the @samp{-v} and @samp{-d} options.
+@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.
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.
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.
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.
fputs (_("\
Mandatory arguments to long options are mandatory for short options too.\n\
fputs (_("\
Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+The same is true for optional arguments.\n\
+ /* Keep -d and --defines separate so that ../build-aux/cross-options.pl
+ * won't assume that -d also takes an argument. */
- -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\
-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\
/* Certain long options cause getopt_long to return 0. */
break;
/* 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;
- spec_graph_file = xstrdup (AS_FILE_NAME (optarg));
+ spec_defines_file = xstrdup (AS_FILE_NAME (optarg));
- 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);
- case 'h':
- usage (EXIT_SUCCESS);
-
case 'L':
language_argmatch (optarg, 0, NULL);
break;
case 'L':
language_argmatch (optarg, 0, NULL);
break;
skeleton_arg (AS_FILE_NAME (optarg), 0, NULL);
break;
skeleton_arg (AS_FILE_NAME (optarg), 0, NULL);
break;
- case 'I':
- include = AS_FILE_NAME (optarg);
+ case 'T':
+ FLAGS_ARGMATCH (trace, optarg);
- case 'd':
- /* Here, the -d and --defines options are differentiated. */
- defines_flag = true;
+ case 'V':
+ version ();
+ exit (EXIT_SUCCESS);
+
+ case 'W':
- 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));
+ case 'h':
+ usage (EXIT_SUCCESS);
+
case 'k':
token_table_flag = true;
break;
case 'k':
token_table_flag = true;
break;
FLAGS_ARGMATCH (report, optarg);
break;
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 't':
debug_flag = true;
break;
- case 'V':
- version ();
- exit (EXIT_SUCCESS);
-
case 'v':
report_flag |= report_states;
break;
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));
- case 'W':
- if (optarg)
- FLAGS_ARGMATCH (warnings, optarg);
- else
- warnings_flag |= warnings_all;
+ case 'y':
+ yacc_flag = true;
break;
case LOCATIONS_OPTION:
break;
case LOCATIONS_OPTION:
printf ("%s\n", compute_pkgdatadir ());
exit (EXIT_SUCCESS);
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);
}
default:
usage (EXIT_FAILURE);
}