] [
.B \-d
] [
-.B \-\-defines
+.BI \-\-defines= defines-file
+] [
+.B \-g
+] [
+.BI \-\-graph= graph-file
] [
.B \-k
] [
] [
.BI \-\-name-prefix= prefix
] [
-.B \-r
-] [
-.B \-\-raw
-] [
.B \-t
] [
.B \-\-debug
.B \-\-fixed-output-files
]
file
+.br
+.B yacc
+[
+.I "similar options and operands"
+]
.SH DESCRIPTION
.I Bison
is a parser generator in the style of
.IR yacc ,
the generated files do not have fixed names, but instead use the prefix
of the input file.
+Moreover, if you need to put
+.I C++
+code in the input file, you can end his name by a C++-like extension
+(.ypp or .y++), then bison will follow your extension to name the
+output file (.cpp or .c++).
For instance, a grammar description file named
-.B parse.y
+.B parse.yxx
would produce the generated parser in a file named
-.BR parse.tab.c ,
+.BR parse.tab.cxx ,
instead of
.IR yacc 's
-.BR y.tab.c .
+.B y.tab.c
+or old
+.I Bison
+version's
+.BR parse.tab.c .
.PP
This description of the options that can be given to
.I bison
.I bison
output file names. The names are
chosen as if the input file were named
-\fIfile-prefix\fB.c\fR.
+\fIfile-prefix\fP\fB.c\fP.
.TP
.B \-d
.br
.ns
-.TP
-.B \-\-defines
Write an extra output file containing macro definitions for the token
type names defined in the grammar and the semantic value type
.BR YYSTYPE ,
variable declarations.
.sp
If the parser output file is named
-\fIname\fB.c\fR
+.IB name .c
then this file
is named
-\fIname\fB.h\fR.
+\fIname\fP\fB.h\fP.
.sp
This output file is essential if you wish to put the definition of
.B yylex
needs to be able to refer to token type codes and the variable
.BR yylval .
.TP
-.B \-r
+.BI \-\-defines= defines-file
+The behavior of
+.B \-\-defines
+is the same than
+.B \-d
+option.
+The only difference is that it has an optional argument which is
+the name of the output filename.
+.TP
+.BI \-g
.br
.ns
+Output a VCG definition of the LALR(1) grammar automaton computed by
+Bison. If the grammar file is
+.BR foo.y
+, the VCG output file will be
+.BR foo.vcg .
.TP
-.B \-\-raw
-The token numbers in the \fIname\fB.h\fR file are usually the Yacc compatible
-translations. If this switch is specified, Bison token numbers
-are output instead. (Yacc numbers start at 257 except for single character
-tokens; Bison assigns token numbers sequentially for all tokens
-starting at 3.)
+.BI \-\-graph= graph-file
+The behavior of
+.BI \-\-graph
+is the same than
+.BI \-g
+option. The only difference is that it has an optional argument which
+is the name of the output graph filename.
.TP
.B \-k
.br
.ns
.TP
.B \-\-token-table
-This switch causes the \fIname\fB.tab.c\fR output to include a list of
-token names in order by their token numbers; this is defined in the array
+This switch causes the
+.IB name .tab.c
+output to include a list of
+token names in order by their token numbers; this is defined in the array
.IR yytname .
-Also generated
-are #defines for
+Also generated
+are #defines for
.IR YYNTOKENS ,
.IR YYNNTS ,
.IR YYNRULES ,
-and
+and
.IR YYNSTATES .
.TP
.B \-l
.ns
.TP
.B \-\-no-parser
-Do not generate the parser code into the output; generate only
-declarations. The generated \fIname\fB.tab.c\fR file will have only
-constant declarations. In addition, a \fIname\fB.act\fR file is
+Do not generate the parser code into the output; generate only
+declarations. The generated
+.IB name .tab.c
+file will have only
+constant declarations. In addition, a
+.IB name .act
+file is
generated containing a switch statement body containing all the
-translated actions.
+translated actions.
.TP
.BI \-o " outfile"
.br
.BR yylex ,
.BR yyerror ,
.BR yylval ,
-.BR yychar ,
+.BR yychar ,
and
.BR yydebug .
.sp
.ns
.TP
.B \-\-debug
-Output a definition of the macro
-.B YYDEBUG
-into the parser file,
+In the parser file, define the macro
+.B YYDEBUG
+to 1 if it is not already defined,
so that the debugging facilities are compiled.
.TP
.B \-v
.IR yacc 's
output file name conventions.
Thus, the following shell script can substitute for
+.I yacc
+and is often installed as
.IR yacc :
.sp
.RS
.ft B
-bison \-y $*
+bison \-y "$@"
.ft R
.sp
.RE
-.PP
-The long-named options can be introduced with `+' as well as `\-\-',
-for compatibility with previous releases. Eventually support for `+'
-will be removed, because it is incompatible with the POSIX.2 standard.
-.SH FILES
-/usr/local/lib/bison.simple simple parser
-.br
-/usr/local/lib/bison.hairy complicated parser
.SH SEE ALSO
.IR yacc (1)
.br