X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/31984206a710101776d1db64009aff6c7962551c..b1cc23c4e3b94b55c2ef98d63052824273ebb92c:/NEWS diff --git a/NEWS b/NEWS index 96cfa7a7..1458cb2d 100644 --- a/NEWS +++ b/NEWS @@ -3,7 +3,52 @@ Bison News Changes in version 2.3a+ (????-??-??): -* Previously, Bison sometimes generated parser tables containing unreachable +* The quotes around NAME that used to be required in the following directive + are now deprecated: + + %define NAME "VALUE" + +* The directive `%pure-parser' is now deprecated in favor of: + + %define api.pure + + which has the same effect except that Bison is more careful to warn about + unreasonable usage in the latter case. + +* Push Parsing + + Bison can now generate an LALR(1) parser in C with a push interface. That + is, instead of invoking `yyparse', which pulls tokens from `yylex', you can + push one token at a time to the parser using `yypush_parse', which will + return to the caller after processing each token. By default, the push + interface is disabled. Either of the following directives will enable it: + + %define api.push_pull "push" // Just push; does not require yylex. + %define api.push_pull "both" // Push and pull; requires yylex. + + See the new section `A Push Parser' in the Bison manual for details. + +* The -g and --graph options now output graphs in Graphviz DOT format, + not VCG format. + +* An experimental directive %language specifies the language of the + generated parser, which can be C (the default) or C++. This + directive affects the skeleton used, and the names of the generated + files if the grammar file's name ends in ".y". + +* The grammar file may now specify the name of the parser header file using + %defines. For example: + + %defines "parser.h" + +* When reporting useless rules, useless nonterminals, and unused terminals, + Bison now employs the terms "useless in grammar" instead of "useless", + "useless in parser" instead of "never reduced", and "unused in grammar" + instead of "unused". + +* Unreachable State Removal + + Previously, Bison sometimes generated parser tables containing unreachable states. A state can become unreachable during conflict resolution if Bison disables a shift action leading to it from a predecessor state. Bison now: @@ -14,7 +59,7 @@ Changes in version 2.3a+ (????-??-??): directives in existing grammar files. 3. For any rule used only in such states, Bison now reports the rule as - "never reduced because of conflicts". + "useless in parser due to conflicts". This feature can be disabled with the following directive: @@ -23,7 +68,9 @@ Changes in version 2.3a+ (????-??-??): See the %define entry in the `Bison Declaration Summary' in the Bison manual for further discussion. -* When instructed to generate a `.output' file including lookahead sets +* Lookahead Set Correction in the `.output' Report + + When instructed to generate a `.output' file including lookahead sets (using `--report=lookahead', for example), Bison now prints each reduction's lookahead set only next to the associated state's one item that (1) is associated with the same rule as the reduction and (2) has its dot at the end @@ -32,18 +79,7 @@ Changes in version 2.3a+ (????-??-??): bug affected only the `.output' file and not the generated parser source code. -* The -g and --graph options now output graphs in Graphviz DOT format, - not VCG format. - -* An experimental directive %language specifies the language of the - generated parser, which can be C (the default) or C++. This - directive affects the skeleton used, and the names of the generated - files if the grammar file's name ends in ".y". - -* The grammar file may now specify the name of the parser header file using - %defines. For example: - - %defines "parser.h" +* --report-file=FILE is a new flag to override the default `.output' file name. * The `=' that used to be required in the following directives is now deprecated: @@ -52,12 +88,9 @@ Changes in version 2.3a+ (????-??-??): %name-prefix "c_" %output "parser.c" -* The quotes around NAME that used to be required in the following directive - are now deprecated: +* An Alternative to `%{...%}' -- `%code QUALIFIER {CODE}' - %define NAME "VALUE" - -* Bison 2.3a provided a new set of directives as a more flexible alternative to + Bison 2.3a provided a new set of directives as a more flexible alternative to the traditional Yacc prologue blocks. Those have now been consolidated into a single %code directive with an optional qualifier field, which identifies the purpose of the code and thus the location(s) where Bison should generate @@ -96,7 +129,9 @@ Changes in version 2.3a+ (????-??-??): To enable these warnings, specify the flag `--warnings=midrule-values' or `-W', which is a synonym for `--warnings=all'. -* Bison now recognizes two separate kinds of default %destructor's and +* Default %destructor or %printer with `<*>' or `<>' + + Bison now recognizes two separate kinds of default %destructor's and %printer's: 1. Place `<*>' in a %destructor/%printer symbol list to define a default @@ -119,6 +154,13 @@ Changes in version 2.3a+ (????-??-??): See the section `Freeing Discarded Symbols' in the Bison manual for further details. +* %left, %right, and %nonassoc can now declare token numbers. This is required + by POSIX. However, see the end of section `Operator Precedence' in the Bison + manual for a caveat concerning the treatment of literal strings. + +* The nonfunctional --no-parser, -n, and %no-parser options have been + completely removed from Bison. + Changes in version 2.3a, 2006-09-13: * Instead of %union, you can define and use your own union type @@ -943,7 +985,7 @@ End: ----- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -2004, 2005, 2006, 2007 Free Software Foundation, Inc. +2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler.