X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/3ebecc240d845191154734074e64dc9d15cb1daa..178e123eec54fc49bfaf4997f7d328c072fd68b6:/doc/bison.texinfo?ds=sidebyside diff --git a/doc/bison.texinfo b/doc/bison.texinfo index af4cf4f0..af9d5321 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -2048,7 +2048,7 @@ exp : NUM @{ $$ = $1; @} @} @end group @group - | '-' exp %preg NEG @{ $$ = -$2; @} + | '-' exp %prec NEG @{ $$ = -$2; @} | exp '^' exp @{ $$ = pow ($1, $3); @} | '(' exp ')' @{ $$ = $2; @} @end group @@ -2684,6 +2684,10 @@ feature test macros can affect the behavior of Bison-generated @findex %requires @findex %provides @findex %code-top +(The prologue alternatives described here are experimental. +More user feedback will help to determine whether they should become permanent +features.) + The functionality of @var{Prologue} sections can often be subtle and inflexible. As an alternative, Bison provides a set of more explicit directives: @@ -4271,6 +4275,9 @@ grammar symbol that has that semantic type tag unless that symbol has its own per-symbol @code{%destructor}. Finally, you can define two different kinds of default @code{%destructor}s. +(These default forms are experimental. +More user feedback will help to determine whether they should become permanent +features.) You can place each of @code{<*>} and @code{<>} in the @var{symbols} list of exactly one @code{%destructor} declaration in your grammar file. The parser will invoke the @var{code} associated with one of these whenever it @@ -4598,12 +4605,16 @@ header also contains their code. @xref{Table of Symbols, ,%requires}. @end deffn +@deffn {Directive} %defines @var{defines-file} +Same as above, but save in the file @var{defines-file}. +@end deffn + @deffn {Directive} %destructor Specify how the parser should reclaim the memory associated to discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}. @end deffn -@deffn {Directive} %file-prefix="@var{prefix}" +@deffn {Directive} %file-prefix "@var{prefix}" Specify a prefix to use for all Bison output file names. The names are chosen as if the input file were named @file{@var{prefix}.y}. @end deffn @@ -4616,14 +4627,14 @@ grammar does not use it, using @samp{%locations} allows for more accurate syntax error messages. @end deffn -@deffn {Directive} %name-prefix="@var{prefix}" +@deffn {Directive} %name-prefix "@var{prefix}" Rename the external symbols used in the parser so that they start with @var{prefix} instead of @samp{yy}. The precise list of symbols renamed in C parsers is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs}, @code{yylval}, @code{yychar}, @code{yydebug}, and (if locations are used) @code{yylloc}. For example, if you use -@samp{%name-prefix="c_"}, the names become @code{c_parse}, @code{c_lex}, +@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}. @xref{Multiple Parsers, ,Multiple Parsers in the Same Program}. @@ -4656,7 +4667,7 @@ associate errors with the parser file, treating it an independent source file in its own right. @end deffn -@deffn {Directive} %output="@var{file}" +@deffn {Directive} %output "@var{file}" Specify @var{file} for the parser file. @end deffn @@ -7265,7 +7276,7 @@ Pretend that @code{%locations} was specified. @xref{Decl Summary}. @item -p @var{prefix} @itemx --name-prefix=@var{prefix} -Pretend that @code{%name-prefix="@var{prefix}"} was specified. +Pretend that @code{%name-prefix "@var{prefix}"} was specified. @xref{Decl Summary}. @item -l @@ -7461,7 +7472,7 @@ for a complete and accurate documentation. @node C++ Semantic Values @subsection C++ Semantic Values @c - No objects in unions -@c - YSTYPE +@c - YYSTYPE @c - Printer and destructor The @code{%union} directive works as for C, see @ref{Union Decl, ,The @@ -8569,12 +8580,22 @@ Separates alternate rules for the same result nonterminal. @deffn {Directive} <*> Used to define a default tagged @code{%destructor} or default tagged @code{%printer}. + +This feature is experimental. +More user feedback will help to determine whether it should become a permanent +feature. + @xref{Destructor Decl, , Freeing Discarded Symbols}. @end deffn @deffn {Directive} <> Used to define a default tagless @code{%destructor} or default tagless @code{%printer}. + +This feature is experimental. +More user feedback will help to determine whether it should become a permanent +feature. + @xref{Destructor Decl, , Freeing Discarded Symbols}. @end deffn @@ -8587,9 +8608,10 @@ Start-Symbol}. It cannot be used in the grammar. @deffn {Directive} %code @{@var{code}@} Other than semantic actions, this is probably the most common place you should write verbatim code for the parser implementation. -For C/C++, it replaces the traditional Yacc prologue, +It replaces the traditional Yacc prologue, +@comment For C/C++, it replaces the traditional Yacc prologue, @code{%@{@var{code}%@}}, for most purposes. -For Java, it inserts code into the parser class. +@comment For Java, it inserts code into the parser class. @cindex Prologue @findex %union @@ -8603,11 +8625,17 @@ not depend on its position in the grammar file relative to any Specifically, @code{%code @{@var{code}@}} always inserts your @var{code} into the parser code file after the usual contents of the parser header file. +(Like all the Yacc prologue alternative directives, this directive is +experimental. +More user feedback will help to determine whether it should become a permanent +feature.) + @xref{Prologue Alternatives}. @end deffn @deffn {Directive} %code-top @{@var{code}@} -Occasionally for C/C++ it is desirable to insert code near the top of the +Occasionally it is desirable to insert code near the top of the +@comment Occasionally for C/C++ it is desirable to insert code near the top of the parser code file. For example: @@ -8618,8 +8646,8 @@ For example: @} @end smallexample -@noindent -For Java, @code{%code-top @{@var{code}@}} is currently unused. +@comment @noindent +@comment For Java, @code{%code-top @{@var{code}@}} is currently unused. @cindex Prologue @findex %union @@ -8629,6 +8657,11 @@ Compare with @code{%@{@var{code}%@}} appearing before the first on its position in the grammar file relative to any @code{%union @{@var{code}@}}. +(Like all the Yacc prologue alternative directives, this directive is +experimental. +More user feedback will help to determine whether it should become a permanent +feature.) + @xref{Prologue Alternatives}. @end deffn @@ -8653,6 +8686,11 @@ Bison declaration to create a header file meant for the scanner. @xref{Decl Summary}. @end deffn +@deffn {Directive} %defines @var{defines-file} +Same as above, but save in the file @var{defines-file}. +@xref{Decl Summary}. +@end deffn + @deffn {Directive} %destructor Specify how the parser should reclaim the memory associated to discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}. @@ -8685,7 +8723,7 @@ Bison declaration to request verbose, specific error message strings when @code{yyerror} is called. @end deffn -@deffn {Directive} %file-prefix="@var{prefix}" +@deffn {Directive} %file-prefix "@var{prefix}" Bison declaration to set the prefix of the output files. @xref{Decl Summary}. @end deffn @@ -8717,7 +8755,7 @@ function is applied to the two semantic values to get a single result. @xref{GLR Parsers, ,Writing @acronym{GLR} Parsers}. @end deffn -@deffn {Directive} %name-prefix="@var{prefix}" +@deffn {Directive} %name-prefix "@var{prefix}" Bison declaration to rename the external symbols. @xref{Decl Summary}. @end deffn @@ -8739,7 +8777,7 @@ Bison declaration to assign nonassociativity to token(s). @xref{Precedence Decl, ,Operator Precedence}. @end deffn -@deffn {Directive} %output="@var{file}" +@deffn {Directive} %output "@var{file}" Bison declaration to set the name of the parser file. @xref{Decl Summary}. @end deffn @@ -8758,11 +8796,17 @@ Bison declaration to assign a precedence to a specific rule. @deffn {Directive} %provides @{@var{code}@} This is the right place to write additional definitions you would like Bison to expose externally. -For C/C++, this directive inserts your @var{code} both into the parser header +That is, this directive inserts your @var{code} both into the parser header +@comment For C/C++, this directive inserts your @var{code} both into the parser header file (if generated; @pxref{Table of Symbols, ,%defines}) and into the parser code file after Bison's required definitions. -For Java, it inserts your @var{code} into the parser java file after the parser -class. +@comment For Java, it inserts your @var{code} into the parser java file after the parser +@comment class. + +(Like all the Yacc prologue alternative directives, this directive is +experimental. +More user feedback will help to determine whether it should become a permanent +feature.) @xref{Prologue Alternatives}. @end deffn @@ -8780,12 +8824,13 @@ Require a Version of Bison}. @deffn {Directive} %requires @{@var{code}@} This is the right place to write dependency code for externally exposed definitions required by Bison. -For C/C++, such exposed definitions are those usually appearing in the parser +Such exposed definitions are those usually appearing in the parser +@comment For C/C++, such exposed definitions are those usually appearing in the parser header file. Thus, this is the right place to define types referenced in @code{%union @{@var{code}@}} directives, and it is the right place to override Bison's default @code{YYSTYPE} and @code{YYLTYPE} definitions. -For Java, this is the right place to write import directives. +@comment For Java, this is the right place to write import directives. @cindex Prologue @findex %union @@ -8797,6 +8842,11 @@ Unlike @code{%@{@var{code}%@}}, @code{%requires @{@var{code}@}} inserts your generated; @pxref{Table of Symbols, ,%defines}) since Bison's required definitions should depend on it in both places. +(Like all the Yacc prologue alternative directives, this directive is +experimental. +More user feedback will help to determine whether it should become a permanent +feature.) + @xref{Prologue Alternatives}. @end deffn @@ -9198,12 +9248,12 @@ grammatically indivisible. The piece of text it represents is a token. @c LocalWords: pre STDC GNUC endif yy YY alloca lf stddef stdlib YYDEBUG @c LocalWords: NUM exp subsubsection kbd Ctrl ctype EOF getchar isdigit @c LocalWords: ungetc stdin scanf sc calc ulator ls lm cc NEG prec yyerrok -@c LocalWords: longjmp fprintf stderr preg yylloc YYLTYPE cos ln +@c LocalWords: longjmp fprintf stderr yylloc YYLTYPE cos ln @c LocalWords: smallexample symrec val tptr FNCT fnctptr func struct sym @c LocalWords: fnct putsym getsym fname arith fncts atan ptr malloc sizeof @c LocalWords: strlen strcpy fctn strcmp isalpha symbuf realloc isalnum @c LocalWords: ptypes itype YYPRINT trigraphs yytname expseq vindex dtype -@c LocalWords: Rhs YYRHSLOC LE nonassoc op deffn typeless typefull yynerrs +@c LocalWords: Rhs YYRHSLOC LE nonassoc op deffn typeless yynerrs @c LocalWords: yychar yydebug msg YYNTOKENS YYNNTS YYNRULES YYNSTATES @c LocalWords: cparse clex deftypefun NE defmac YYACCEPT YYABORT param @c LocalWords: strncmp intval tindex lvalp locp llocp typealt YYBACKUP @@ -9213,5 +9263,5 @@ grammatically indivisible. The piece of text it represents is a token. @c LocalWords: hexflag STR exdent itemset asis DYYDEBUG YYFPRINTF args @c LocalWords: infile ypp yxx outfile itemx tex leaderfill @c LocalWords: hbox hss hfill tt ly yyin fopen fclose ofirst gcc ll -@c LocalWords: yyrestart nbar yytext fst snd osplit ntwo strdup AST +@c LocalWords: nbar yytext fst snd osplit ntwo strdup AST @c LocalWords: YYSTACK DVI fdl printindex