X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/d782395d52519fabb2cac3bd479246cc6de7efa8..a0de5091fc13a2fe53f72e6b2d3054b745d9dd8a:/doc/bison.texinfo diff --git a/doc/bison.texinfo b/doc/bison.texinfo index ccec0d45..4b49c811 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -4726,8 +4726,8 @@ where Bison should generate it. Not all values of @var{qualifier} are available for all target languages: @itemize @bullet -@findex %code requires @item requires +@findex %code requires @itemize @bullet @item Language(s): C, C++ @@ -4833,14 +4833,77 @@ This is equivalent to @code{"true"}. In this case, Bison selects a default value, which may depend on the selected target language and/or parser skeleton. @end enumerate -@end deffn -@deffn {Directive} %define push_pull "@var{value}" -Bison declaration to request a @code{"pull"} parser, a @code{"push"} parser, or -@code{"both"}. -The default @code{"@var{value}"} is @code{"pull"}. -This directive is currently only available for LALR(1) parsers in C. +Some of the accepted @var{variable}s are: + +@itemize @bullet +@item push_pull +@findex %define push_pull + +@itemize @bullet +@item Language(s): C (LALR(1) only) + +@item Purpose: Requests a pull parser, a push parser, or both. @xref{Push Decl, ,A Push Parser}. + +@item Accepted Values: @code{"pull"}, @code{"push"}, @code{"both"} + +@item Default Value: @code{"pull"} +@end itemize + +@item namespace +@findex %define namespace + +@itemize +@item Languages(s): C++ + +@item Purpose: Specifies the namespace for the parser class. +For example, if you specify: + +@smallexample +%define namespace "foo::bar" +@end smallexample + +Bison uses @code{foo::bar} verbatim in references such as: + +@smallexample +foo::bar::parser::semantic_type +@end smallexample + +However, to open a namespace, Bison removes any leading @code{::} and then +splits on any remaining occurrences: + +@smallexample +namespace foo @{ namespace bar @{ + class position; + class location; +@} @} +@end smallexample + +@item Accepted Values: Any absolute or relative C++ namespace reference without +a trailing @code{"::"}. +For example, @code{"foo"} or @code{"::foo::bar"}. + +@item Default Value: The value specified by @code{%name-prefix}, which defaults +to @code{yy}. +This usage of @code{%name-prefix} is for backward compatibility and can be +confusing since @code{%name-prefix} also specifies the textual prefix for the +lexical analyzer function. +Thus, if you specify @code{%name-prefix}, it is best to also specify +@code{%define namespace} so that @code{%name-prefix} @emph{only} affects the +lexical analyzer function. +For example, if you specify: + +@smallexample +%define namespace "foo" +%name-prefix "bar::" +@end smallexample + +The parser namespace is @code{foo} and @code{yylex} is referenced as +@code{bar::lex}. +@end itemize +@end itemize + @end deffn @deffn {Directive} %defines @@ -4921,9 +4984,9 @@ is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs}, @code{yypush_parse}, @code{yypull_parse}, @code{yypstate}, @code{yypstate_new} and @code{yypstate_delete} will also be renamed. For example, if you use @samp{%name-prefix "c_"}, the -names become @code{c_parse}, @code{c_lex}, and so on. In C++ parsers, -it is only the surrounding namespace which is named @var{prefix} instead -of @samp{yy}. +names become @code{c_parse}, @code{c_lex}, and so on. +For C++ parsers, see the @code{%define namespace} documentation in this +section. @xref{Multiple Parsers, ,Multiple Parsers in the Same Program}. @end deffn @@ -7586,6 +7649,9 @@ Print the version number of Bison and exit. @item --print-localedir Print the name of the directory containing locale-dependent data. +@item --print-datadir +Print the name of the directory containing skeletons and XSLT. + @item -y @itemx --yacc Act more like the traditional Yacc command. This can cause @@ -7747,6 +7813,7 @@ the corresponding short option. @item @option{--no-lines} @tab @option{-l} @item @option{--output=@var{outfile}} @tab @option{-o @var{outfile}} @item @option{--print-localedir} @tab +@item @option{--print-datadir} @tab @item @option{--token-table} @tab @option{-k} @item @option{--verbose} @tab @option{-v} @item @option{--version} @tab @option{-V} @@ -7812,10 +7879,12 @@ The C++ @acronym{LALR}(1) parser is selected using the language directive, @option{--language=c++}. @xref{Decl Summary}. -When run, @command{bison} will create several -entities in the @samp{yy} namespace. Use the @samp{%name-prefix} -directive to change the namespace name, see @ref{Decl Summary}. The -various classes are generated in the following files: +When run, @command{bison} will create several entities in the @samp{yy} +namespace. +@findex %define namespace +Use the @samp{%define namespace} directive to change the namespace name, see +@ref{Decl Summary}. +The various classes are generated in the following files: @table @file @item position.hh @@ -9329,12 +9398,6 @@ Define a variable to adjust Bison's behavior. @xref{Decl Summary,,%define}. @end deffn -@deffn {Directive} %define push_pull "@var{value}" -Bison declaration to request a @code{"pull"} parser, a @code{"push"} parser, or -@code{"both"}. -@xref{Decl Summary,,%define push_pull}. -@end deffn - @deffn {Directive} %defines Bison declaration to create a header file meant for the scanner. @xref{Decl Summary}.