mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-15 23:33:03 +00:00
Document Yacc prologue alternatives and default %destructor's and
%printer's as experimental. Don't mention Java yet. Discussed at <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00002.html>. * NEWS (2.3a+): Say they're experimental. Remove any mention of Java. (2.3a): Annotate this entry to say the old forms of these features were also experimental. * doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols, Bison Symbols): Say they're experimental. Comment out any mention of Java (we'll want this back eventually).
This commit is contained in:
@@ -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
|
||||
@@ -8573,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
|
||||
|
||||
@@ -8591,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
|
||||
@@ -8607,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:
|
||||
|
||||
@@ -8622,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
|
||||
@@ -8633,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
|
||||
|
||||
@@ -8767,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
|
||||
@@ -8789,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
|
||||
@@ -8806,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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user