]> git.saurik.com Git - bison.git/blobdiff - NEWS
Normalize conflict related messages.
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 98c7dad65eb3e1a2c08c29ebe696aef842b4ea41..6123e57a797e8b411be059b3133bfec82ac05142 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,11 +3,24 @@ Bison News
 
 Changes in version 1.49b:
 
 
 Changes in version 1.49b:
 
+* GLR parsing
+  The declaration
+     %glr-parser
+  causes Bison to produce a Generalized LR (GLR) parser, capable of handling
+  almost any context-free grammar, ambiguous or not.  The new declarations
+  %dprec and %merge on grammar rules allow parse-time resolution of
+  ambiguities.  Contributed by Paul Hilfinger.
+
+* Output Directory
+  When not in Yacc compatibility mode, when the output file was not
+  specified, runnning `bison foo/bar.y' created `foo/bar.c'.  It
+  now creates `bar.c'.
+
 * Undefined token
   The undefined token was systematically mapped to 2 which prevented
   the use of 2 from the user.  This is no longer the case.
 
 * Undefined token
   The undefined token was systematically mapped to 2 which prevented
   the use of 2 from the user.  This is no longer the case.
 
-* Undefined token
+* Unknown token numbers
   If yylex returned a code out of range, yyparse could die.  This is
   no longer the case.
 
   If yylex returned a code out of range, yyparse could die.  This is
   no longer the case.
 
@@ -17,20 +30,39 @@ Changes in version 1.49b:
   user specified that one of her tokens is numbered 256, then error
   will be mapped onto another number.
 
   user specified that one of her tokens is numbered 256, then error
   will be mapped onto another number.
 
+* Error recovery now conforms to documentation and to POSIX
+  When a Bison-generated parser encounters a syntax error, it now pops
+  the stack until it finds a state that allows shifting the error
+  token.  Formerly, it popped the stack until it found a state that
+  allowed some non-error action other than a default reduction on the
+  error token.  The new behavior has long been the documented behavior,
+  and has long been required by POSIX.  For more details, please see
+  <http://mail.gnu.org/pipermail/bug-bison/2002-May/001452.html>.
+
+* Traces
+  Popped tokens and nonterminals are now reported.
+
 * Large grammars
 * Large grammars
-  Are now supported (large token numbers, large grammar size (= sum of
-  the LHS and RHS lengths), large LALR tables).
+  Large grammars are now supported (large token numbers, large grammar
+  size (= sum of the LHS and RHS lengths), large LALR tables).
 
 
-* The initial rule is explicit.
+* Explicit initial rule
   Bison used to play hacks with the initial rule, which the user does
   not write.  It is now explicit, and visible in the reports and
   graphs as rule 0.
 
   Bison used to play hacks with the initial rule, which the user does
   not write.  It is now explicit, and visible in the reports and
   graphs as rule 0.
 
-* Useless rules are actually removed.
+* Useless rules
   Before, Bison reported the useless rules, but, although not used,
   Before, Bison reported the useless rules, but, although not used,
-  included them in the parsers.
+  included them in the parsers.  They are now actually removed.
 
 
-* False `Token not used' report fixed.
+* Useless rules, useless nonterminals
+  They are now reported, as a warning, with their locations.
+
+* Rules never reduced
+  Rules that can never be reduced because of conflicts are now
+  reported.
+
+* Incorrect `Token not used'
   On a grammar such as
 
            %token useless useful
   On a grammar such as
 
            %token useless useful
@@ -40,8 +72,8 @@ Changes in version 1.49b:
   where a token was used to set the precedence of the last rule,
   bison reported both `useful' and `useless' as useless tokens.
 
   where a token was used to set the precedence of the last rule,
   bison reported both `useful' and `useless' as useless tokens.
 
-* Revert the C++ namespace changes introduced in 1.31, as they caused too
-  many portability hassles.
+* Revert the C++ namespace changes introduced in 1.31
+  as they caused too many portability hassles.
 
 * Default locations
   By an accident of design, the default computation of @$ was
 
 * Default locations
   By an accident of design, the default computation of @$ was
@@ -61,12 +93,38 @@ Changes in version 1.49b:
 * Semantic parser
   This old option, which has been broken for ages, is removed.
 
 * Semantic parser
   This old option, which has been broken for ages, is removed.
 
-* New tranlations
+* New translation
   Croatian, thanks to Denis Lackovic.
 
   Croatian, thanks to Denis Lackovic.
 
-* Token definitions
+* Incorrect token definitions
   When fed with `%token 'a' "A"', Bison used to output `#define 'a' 65'.
 
   When fed with `%token 'a' "A"', Bison used to output `#define 'a' 65'.
 
+* Token definitions as enums
+  Tokens are output both as the traditional #define's, and, provided
+  the compiler supports ANSI C or is a C++ compiler, as enums.
+  This helps debuggers producing symbols instead of values.
+
+* Reports
+  In addition to --verbose, bison supports --report=THINGS, which
+  produces additional information:
+  - itemset
+    complete the core item sets with their closure
+  - lookahead
+    explicitly associate lookaheads to items
+  - solved
+    describe shift/reduce conflicts solving.
+    Bison used to systematically output this information on top of
+    the report.  Solved conflicts are now attached to their states.
+
+* Type clashes
+  Previous versions don't complain when there is a type clash on
+  the default action if the rule has a mid-rule action, such as in:
+
+      %type <foo> bar
+      %%
+      bar: '0' {} '0';
+
+  This is fixed.
 \f
 Changes in version 1.35, 2002-03-25:
 
 \f
 Changes in version 1.35, 2002-03-25: