Index: ChangeLog =================================================================== RCS file: /sources/bison/bison/ChangeLog,v retrieving revision 1.1611 diff -p -u -r1.1611 ChangeLog --- ChangeLog 2 Dec 2006 01:52:16 -0000 1.1611 +++ ChangeLog 5 Dec 2006 23:00:06 -0000 @@ -1,3 +1,15 @@ +2006-12-05 Joel E. Denny + + Document Yacc prologue alternatives and default %destructor's and + %printer's as experimental. Don't mention Java yet. Discussed at + . + * 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 Support a file name argument to %defines. Deprecate `=' in Index: NEWS =================================================================== RCS file: /sources/bison/bison/NEWS,v retrieving revision 1.167 diff -p -u -r1.167 NEWS --- NEWS 2 Dec 2006 01:52:16 -0000 1.167 +++ NEWS 5 Dec 2006 23:00:07 -0000 @@ -54,6 +54,10 @@ Changes in version 2.3a+ (????-??-??): 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. + 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 details. @@ -63,68 +67,68 @@ Changes in version 2.3a+ (????-??-??): 1. %code {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, `%{CODE%}', for most purposes. - For Java, it inserts your CODE into the parser class. Compare with: - - - `%{CODE%}' appearing after the first `%union {CODE}' in a C/C++ - based grammar file. While Bison will continue to support `%{CODE%}' - for backward compatibility, `%code {CODE}' is cleaner as its - functionality does not depend on its position in the grammar file - relative to any `%union {CODE}'. Specifically, `%code {CODE}' - always inserts your CODE into the parser code file after the usual - contents of the parser header file. + should write verbatim code for the parser implementation. It replaces + the traditional Yacc prologue, `%{CODE%}', for most purposes. Compare + with: + + - `%{CODE%}' appearing after the first `%union {CODE}' in a grammar + file. While Bison will continue to support `%{CODE%}' for backward + compatibility, `%code {CODE}' is cleaner as its functionality does + not depend on its position in the grammar file relative to any + `%union {CODE}'. Specifically, `%code {CODE}' always inserts your + CODE into the parser code file after the usual contents of the + parser header file. - `%after-header {CODE}', which only Bison 2.3a supported. 2. %requires {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 header file. Thus, this is the - right place to define types referenced in `%union {CODE}' directives, - and it is the right place to override Bison's default YYSTYPE and - YYLTYPE definitions. For Java, this is the right place to write import - directives. Compare with: - - - `%{CODE%}' appearing before the first `%union {CODE}' in a C/C++ - based grammar file. Unlike `%{CODE%}', `%requires {CODE}' inserts - your CODE both into the parser code file and into the parser header - file since Bison's required definitions should depend on it in both - places. + definitions required by Bison. Such exposed definitions are those + usually appearing in the parser header file. Thus, this is the right + place to define types referenced in `%union {CODE}' directives, and it + is the right place to override Bison's default YYSTYPE and YYLTYPE + definitions. Compare with: + + - `%{CODE%}' appearing before the first `%union {CODE}' in a grammar + file. Unlike `%{CODE%}', `%requires {CODE}' inserts your CODE both + into the parser code file and into the parser header file since + Bison's required definitions should depend on it in both places. - `%start-header {CODE}', which only Bison 2.3a supported. 3. %provides {CODE} 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 - Bison's required definitions. For Java, it inserts your CODE into the - parser java file after the parser class. Compare with: + Bison's required definitions. Compare with: - `%end-header {CODE}', which only Bison 2.3a supported. 4. %code-top {CODE} - Occasionally for C/C++ it is desirable to insert code near the top of - the parser code file. For example: + Occasionally it is desirable to insert code near the top of the parser + code file. For example: %code-top { #define _GNU_SOURCE #include } - For Java, `%code-top {CODE}' is currently unused. Compare with: + Compare with: - - `%{CODE%}' appearing before the first `%union {CODE}' in a C/C++ - based grammar file. `%code-top {CODE}' is cleaner as its - functionality does not depend on its position in the grammar file - relative to any `%union {CODE}'. + - `%{CODE%}' appearing before the first `%union {CODE}' in a grammar + file. `%code-top {CODE}' is cleaner as its functionality does not + depend on its position in the grammar file relative to any + `%union {CODE}'. - `%before-header {CODE}', which only Bison 2.3a supported. 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 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. 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 `%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', `--yacc', or `%yacc'), Bison no longer generates #define statements for 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 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 old spelling still works, but is not documented and may be removed in a future release. Index: doc/bison.texinfo =================================================================== RCS file: /sources/bison/bison/doc/bison.texinfo,v retrieving revision 1.213 diff -p -u -r1.213 bison.texinfo --- doc/bison.texinfo 2 Dec 2006 01:52:16 -0000 1.213 +++ doc/bison.texinfo 5 Dec 2006 23:00:10 -0000 @@ -2684,6 +2684,10 @@ feature test macros can affect the behav @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 ty 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 r @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 @deffn {Directive} %code @address@hidden@} 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, address@hidden For C/C++, it replaces the traditional Yacc prologue, @address@hidden@address@hidden, for most purposes. -For Java, it inserts code into the parser class. address@hidden For Java, it inserts code into the parser class. @cindex Prologue @findex %union @@ -8607,11 +8625,17 @@ not depend on its position in the gramma Specifically, @code{%code @address@hidden@}} 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 @address@hidden@} -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 address@hidden 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 address@hidden -For Java, @code{%code-top @address@hidden@}} is currently unused. address@hidden @noindent address@hidden For Java, @code{%code-top @address@hidden@}} is currently unused. @cindex Prologue @findex %union @@ -8633,6 +8657,11 @@ Compare with @address@hidden@address@hidden app on its position in the grammar file relative to any @code{%union @address@hidden@}}. +(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 @deffn {Directive} %provides @address@hidden@} 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 address@hidden 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. address@hidden For Java, it inserts your @var{code} into the parser java file after the parser address@hidden 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 @address@hidden@} 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 address@hidden 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 @address@hidden@}} 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. address@hidden For Java, this is the right place to write import directives. @cindex Prologue @findex %union @@ -8806,6 +8842,11 @@ Unlike @address@hidden@address@hidden, @code{%r 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