mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-22 18:53:04 +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:
12
ChangeLog
12
ChangeLog
@@ -1,3 +1,15 @@
|
|||||||
|
2006-12-05 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
2006-12-01 Joel E. Denny <jdenny@ces.clemson.edu>
|
2006-12-01 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
Support a file name argument to %defines. Deprecate `=' in
|
Support a file name argument to %defines. Deprecate `=' in
|
||||||
|
|||||||
73
NEWS
73
NEWS
@@ -54,6 +54,10 @@ Changes in version 2.3a+ (????-??-??):
|
|||||||
longer applies any %destructor to a mid-rule value if that mid-rule value is
|
longer applies any %destructor to a mid-rule value if that mid-rule value is
|
||||||
not actually ever referenced using either $$ or $n in a semantic action.
|
not actually ever referenced using either $$ or $n in a semantic action.
|
||||||
|
|
||||||
|
The default %destructor's and %printer's are experimental. More user
|
||||||
|
feedback will help to determine whether they should become permanent
|
||||||
|
features.
|
||||||
|
|
||||||
See the section `Freeing Discarded Symbols' in the Bison manual for further
|
See the section `Freeing Discarded Symbols' in the Bison manual for further
|
||||||
details.
|
details.
|
||||||
|
|
||||||
@@ -63,68 +67,68 @@ Changes in version 2.3a+ (????-??-??):
|
|||||||
1. %code {CODE}
|
1. %code {CODE}
|
||||||
|
|
||||||
Other than semantic actions, this is probably the most common place you
|
Other than semantic actions, this is probably the most common place you
|
||||||
should write verbatim code for the parser implementation. For C/C++, it
|
should write verbatim code for the parser implementation. It replaces
|
||||||
replaces the traditional Yacc prologue, `%{CODE%}', for most purposes.
|
the traditional Yacc prologue, `%{CODE%}', for most purposes. Compare
|
||||||
For Java, it inserts your CODE into the parser class. Compare with:
|
with:
|
||||||
|
|
||||||
- `%{CODE%}' appearing after the first `%union {CODE}' in a C/C++
|
- `%{CODE%}' appearing after the first `%union {CODE}' in a grammar
|
||||||
based grammar file. While Bison will continue to support `%{CODE%}'
|
file. While Bison will continue to support `%{CODE%}' for backward
|
||||||
for backward compatibility, `%code {CODE}' is cleaner as its
|
compatibility, `%code {CODE}' is cleaner as its functionality does
|
||||||
functionality does not depend on its position in the grammar file
|
not depend on its position in the grammar file relative to any
|
||||||
relative to any `%union {CODE}'. Specifically, `%code {CODE}'
|
`%union {CODE}'. Specifically, `%code {CODE}' always inserts your
|
||||||
always inserts your CODE into the parser code file after the usual
|
CODE into the parser code file after the usual contents of the
|
||||||
contents of the parser header file.
|
parser header file.
|
||||||
- `%after-header {CODE}', which only Bison 2.3a supported.
|
- `%after-header {CODE}', which only Bison 2.3a supported.
|
||||||
|
|
||||||
2. %requires {CODE}
|
2. %requires {CODE}
|
||||||
|
|
||||||
This is the right place to write dependency code for externally exposed
|
This is the right place to write dependency code for externally exposed
|
||||||
definitions required by Bison. For C/C++, such exposed definitions are
|
definitions required by Bison. Such exposed definitions are those
|
||||||
those usually appearing in the parser header file. Thus, this is the
|
usually appearing in the parser header file. Thus, this is the right
|
||||||
right place to define types referenced in `%union {CODE}' directives,
|
place to define types referenced in `%union {CODE}' directives, and it
|
||||||
and it is the right place to override Bison's default YYSTYPE and
|
is the right place to override Bison's default YYSTYPE and YYLTYPE
|
||||||
YYLTYPE definitions. For Java, this is the right place to write import
|
definitions. Compare with:
|
||||||
directives. Compare with:
|
|
||||||
|
|
||||||
- `%{CODE%}' appearing before the first `%union {CODE}' in a C/C++
|
- `%{CODE%}' appearing before the first `%union {CODE}' in a grammar
|
||||||
based grammar file. Unlike `%{CODE%}', `%requires {CODE}' inserts
|
file. Unlike `%{CODE%}', `%requires {CODE}' inserts your CODE both
|
||||||
your CODE both into the parser code file and into the parser header
|
into the parser code file and into the parser header file since
|
||||||
file since Bison's required definitions should depend on it in both
|
Bison's required definitions should depend on it in both places.
|
||||||
places.
|
|
||||||
- `%start-header {CODE}', which only Bison 2.3a supported.
|
- `%start-header {CODE}', which only Bison 2.3a supported.
|
||||||
|
|
||||||
3. %provides {CODE}
|
3. %provides {CODE}
|
||||||
|
|
||||||
This is the right place to write additional definitions you would like
|
This is the right place to write additional definitions you would like
|
||||||
Bison to expose externally. For C/C++, this directive inserts your CODE
|
Bison to expose externally. That is, this directive inserts your CODE
|
||||||
both into the parser header file and into the parser code file after
|
both into the parser header file and into the parser code file after
|
||||||
Bison's required definitions. For Java, it inserts your CODE into the
|
Bison's required definitions. Compare with:
|
||||||
parser java file after the parser class. Compare with:
|
|
||||||
|
|
||||||
- `%end-header {CODE}', which only Bison 2.3a supported.
|
- `%end-header {CODE}', which only Bison 2.3a supported.
|
||||||
|
|
||||||
4. %code-top {CODE}
|
4. %code-top {CODE}
|
||||||
|
|
||||||
Occasionally for C/C++ it is desirable to insert code near the top of
|
Occasionally it is desirable to insert code near the top of the parser
|
||||||
the parser code file. For example:
|
code file. For example:
|
||||||
|
|
||||||
%code-top {
|
%code-top {
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
For Java, `%code-top {CODE}' is currently unused. Compare with:
|
Compare with:
|
||||||
|
|
||||||
- `%{CODE%}' appearing before the first `%union {CODE}' in a C/C++
|
- `%{CODE%}' appearing before the first `%union {CODE}' in a grammar
|
||||||
based grammar file. `%code-top {CODE}' is cleaner as its
|
file. `%code-top {CODE}' is cleaner as its functionality does not
|
||||||
functionality does not depend on its position in the grammar file
|
depend on its position in the grammar file relative to any
|
||||||
relative to any `%union {CODE}'.
|
`%union {CODE}'.
|
||||||
- `%before-header {CODE}', which only Bison 2.3a supported.
|
- `%before-header {CODE}', which only Bison 2.3a supported.
|
||||||
|
|
||||||
If you have multiple occurrences of any one of the above four directives,
|
If you have multiple occurrences of any one of the above four directives,
|
||||||
Bison will concatenate the contents in the order they appear in the grammar
|
Bison will concatenate the contents in the order they appear in the grammar
|
||||||
file.
|
file.
|
||||||
|
|
||||||
|
The prologue alternatives are experimental. More user feedback will help to
|
||||||
|
determine whether they should become permanent features.
|
||||||
|
|
||||||
Also see the new section `Prologue Alternatives' in the Bison manual.
|
Also see the new section `Prologue Alternatives' in the Bison manual.
|
||||||
|
|
||||||
Changes in version 2.3a, 2006-09-13:
|
Changes in version 2.3a, 2006-09-13:
|
||||||
@@ -160,6 +164,10 @@ Changes in version 2.3a, 2006-09-13:
|
|||||||
also prints its line number to `stdout'. It performs only the second
|
also prints its line number to `stdout'. It performs only the second
|
||||||
`%destructor' in this case, so it invokes `free' only once.
|
`%destructor' in this case, so it invokes `free' only once.
|
||||||
|
|
||||||
|
[Although we failed to mention this here in the 2.3a release, the default
|
||||||
|
%destructor's and %printer's were experimental, and they were rewritten in
|
||||||
|
future versions.]
|
||||||
|
|
||||||
* Except for LALR(1) parsers in C with POSIX Yacc emulation enabled (with `-y',
|
* Except for LALR(1) parsers in C with POSIX Yacc emulation enabled (with `-y',
|
||||||
`--yacc', or `%yacc'), Bison no longer generates #define statements for
|
`--yacc', or `%yacc'), Bison no longer generates #define statements for
|
||||||
associating token numbers with token names. Removing the #define statements
|
associating token numbers with token names. Removing the #define statements
|
||||||
@@ -230,6 +238,9 @@ Changes in version 2.3a, 2006-09-13:
|
|||||||
If you have multiple occurrences of any one of the above declarations, Bison
|
If you have multiple occurrences of any one of the above declarations, Bison
|
||||||
will concatenate the contents in declaration order.
|
will concatenate the contents in declaration order.
|
||||||
|
|
||||||
|
[Although we failed to mention this here in the 2.3a release, the prologue
|
||||||
|
alternatives were experimental, and they were rewritten in future versions.]
|
||||||
|
|
||||||
* The option `--report=look-ahead' has been changed to `--report=lookahead'.
|
* The option `--report=look-ahead' has been changed to `--report=lookahead'.
|
||||||
The old spelling still works, but is not documented and may be removed
|
The old spelling still works, but is not documented and may be removed
|
||||||
in a future release.
|
in a future release.
|
||||||
|
|||||||
@@ -2684,6 +2684,10 @@ feature test macros can affect the behavior of Bison-generated
|
|||||||
@findex %requires
|
@findex %requires
|
||||||
@findex %provides
|
@findex %provides
|
||||||
@findex %code-top
|
@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
|
The functionality of @var{Prologue} sections can often be subtle and
|
||||||
inflexible.
|
inflexible.
|
||||||
As an alternative, Bison provides a set of more explicit directives:
|
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}.
|
per-symbol @code{%destructor}.
|
||||||
|
|
||||||
Finally, you can define two different kinds of default @code{%destructor}s.
|
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
|
You can place each of @code{<*>} and @code{<>} in the @var{symbols} list of
|
||||||
exactly one @code{%destructor} declaration in your grammar file.
|
exactly one @code{%destructor} declaration in your grammar file.
|
||||||
The parser will invoke the @var{code} associated with one of these whenever it
|
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} <*>
|
@deffn {Directive} <*>
|
||||||
Used to define a default tagged @code{%destructor} or default tagged
|
Used to define a default tagged @code{%destructor} or default tagged
|
||||||
@code{%printer}.
|
@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}.
|
@xref{Destructor Decl, , Freeing Discarded Symbols}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} <>
|
@deffn {Directive} <>
|
||||||
Used to define a default tagless @code{%destructor} or default tagless
|
Used to define a default tagless @code{%destructor} or default tagless
|
||||||
@code{%printer}.
|
@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}.
|
@xref{Destructor Decl, , Freeing Discarded Symbols}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@@ -8591,9 +8608,10 @@ Start-Symbol}. It cannot be used in the grammar.
|
|||||||
@deffn {Directive} %code @{@var{code}@}
|
@deffn {Directive} %code @{@var{code}@}
|
||||||
Other than semantic actions, this is probably the most common place you should
|
Other than semantic actions, this is probably the most common place you should
|
||||||
write verbatim code for the parser implementation.
|
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.
|
@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
|
@cindex Prologue
|
||||||
@findex %union
|
@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
|
Specifically, @code{%code @{@var{code}@}} always inserts your @var{code} into
|
||||||
the parser code file after the usual contents of the parser header file.
|
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}.
|
@xref{Prologue Alternatives}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Directive} %code-top @{@var{code}@}
|
@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.
|
parser code file.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
@@ -8622,8 +8646,8 @@ For example:
|
|||||||
@}
|
@}
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
@noindent
|
@comment @noindent
|
||||||
For Java, @code{%code-top @{@var{code}@}} is currently unused.
|
@comment For Java, @code{%code-top @{@var{code}@}} is currently unused.
|
||||||
|
|
||||||
@cindex Prologue
|
@cindex Prologue
|
||||||
@findex %union
|
@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
|
on its position in the grammar file relative to any
|
||||||
@code{%union @{@var{code}@}}.
|
@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}.
|
@xref{Prologue Alternatives}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@@ -8767,11 +8796,17 @@ Bison declaration to assign a precedence to a specific rule.
|
|||||||
@deffn {Directive} %provides @{@var{code}@}
|
@deffn {Directive} %provides @{@var{code}@}
|
||||||
This is the right place to write additional definitions you would like Bison to
|
This is the right place to write additional definitions you would like Bison to
|
||||||
expose externally.
|
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
|
file (if generated; @pxref{Table of Symbols, ,%defines}) and into the parser
|
||||||
code file after Bison's required definitions.
|
code file after Bison's required definitions.
|
||||||
For Java, it inserts your @var{code} into the parser java file after the parser
|
@comment For Java, it inserts your @var{code} into the parser java file after the parser
|
||||||
class.
|
@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}.
|
@xref{Prologue Alternatives}.
|
||||||
@end deffn
|
@end deffn
|
||||||
@@ -8789,12 +8824,13 @@ Require a Version of Bison}.
|
|||||||
@deffn {Directive} %requires @{@var{code}@}
|
@deffn {Directive} %requires @{@var{code}@}
|
||||||
This is the right place to write dependency code for externally exposed
|
This is the right place to write dependency code for externally exposed
|
||||||
definitions required by Bison.
|
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.
|
header file.
|
||||||
Thus, this is the right place to define types referenced in
|
Thus, this is the right place to define types referenced in
|
||||||
@code{%union @{@var{code}@}} directives, and it is the right place to override
|
@code{%union @{@var{code}@}} directives, and it is the right place to override
|
||||||
Bison's default @code{YYSTYPE} and @code{YYLTYPE} definitions.
|
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
|
@cindex Prologue
|
||||||
@findex %union
|
@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
|
generated; @pxref{Table of Symbols, ,%defines}) since Bison's required
|
||||||
definitions should depend on it in both places.
|
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}.
|
@xref{Prologue Alternatives}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user