]> git.saurik.com Git - bison.git/blobdiff - NEWS
(EXTRA_DIST): Avoid +=, a GNU make extension.
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 4f1f0751cab48a52ee60e788135845f42b80793b..51836800db71469ff3d051a3747afd1268647961 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,18 +1,77 @@
 Bison News
 ----------
 
 Bison News
 ----------
 
-Changes in version 1.49a:
-
-* The initial rule is explicit.
+Changes in version 1.49b, 2002-08-12:
+
+* 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.
+
+* Unknown token numbers
+  If yylex returned a code out of range, yyparse could die.  This is
+  no longer the case.
+
+* Error token
+  According to POSIX, the error token should be numbered as 256.
+  Bison extends this requirement by making it a preference: *if* the
+  user specified that one of her tokens is numbered 256, then error
+  will be mapped onto another number.
+
+* Verbose error messages
+  They no longer report `..., expecting error or...' for state where
+  error recovery is possible.
+
+* End token
+  Defaults to `$end' instead of `$'.
+
+* 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.
+
+* Larger grammars
+  Larger grammars are now supported (larger token numbers, larger grammar
+  size (= sum of the LHS and RHS lengths), larger LALR tables).
+  Formerly, many of these numbers ran afoul of 16-bit limits;
+  now these limits are 32 bits on most hosts.
+
+* 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.
-        
-* False `Token not used' report fixed.
+  included them in the parsers.  They are now actually removed.
+
+* 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
@@ -22,21 +81,115 @@ Changes in version 1.49a:
   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.
 
 
-* Items overflow
-  Bison no longer dumps core when there are too many items, it just
-  dies.
+* Default locations
+  By an accident of design, the default computation of @$ was
+  performed after another default computation was performed: @$ = @1.
+  The latter is now removed: YYLLOC_DEFAULT is fully responsible of
+  the computation of @$.
 
 * Token end-of-file
   The token end of file may be specified by the user, in which case,
   the user symbol is used in the reports, the graphs, and the verbose
 
 * Token end-of-file
   The token end of file may be specified by the user, in which case,
   the user symbol is used in the reports, the graphs, and the verbose
-  error messages instead of `$', which remains being the defaults.
+  error messages instead of `$end', which remains being the default.
   For instance
      %token YYEOF 0
   or
      %token YYEOF 0 "end of file"
   For instance
      %token YYEOF 0
   or
      %token YYEOF 0 "end of file"
+
+* Semantic parser
+  This old option, which has been broken for ages, is removed.
+
+* New translations
+  Brazilian Portuguese, thanks to Alexandre Folle de Menezes.
+  Croatian, thanks to Denis Lackovic.
+
+* Incorrect token definitions
+  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.
+
+* GNU M4 is now required when using Bison.
+\f
+Changes in version 1.35, 2002-03-25:
+
+* C Skeleton
+  Some projects use Bison's C parser with C++ compilers, and define
+  YYSTYPE as a class.  The recent adjustment of C parsers for data
+  alignment and 64 bit architectures made this impossible.
+
+  Because for the time being no real solution for C++ parser
+  generation exists, kludges were implemented in the parser to
+  maintain this use.  In the future, when Bison has C++ parsers, this
+  kludge will be disabled.
+
+  This kludge also addresses some C++ problems when the stack was
+  extended.
+
+\f
+Changes in version 1.34, 2002-03-12:
+
+* File name clashes are detected
+  $ bison foo.y -d -o foo.x
+  fatal error: header and parser would both be named `foo.x'
+
+* A missing `;' at the end of a rule triggers a warning
+  In accordance with POSIX, and in agreement with other
+  Yacc implementations, Bison will mandate this semicolon in the near
+  future.  This eases the implementation of a Bison parser of Bison
+  grammars by making this grammar LALR(1) instead of LR(2).  To
+  facilitate the transition, this release introduces a warning.
+
+* Revert the C++ namespace changes introduced in 1.31, as they caused too
+  many portability hassles.
+
+* DJGPP support added.
+
+* Fix test suite portability problems.
+\f
+Changes in version 1.33, 2002-02-07:
+
+* Fix C++ issues
+  Groff could not be compiled for the definition of size_t was lacking
+  under some conditions.
+
+* Catch invalid @n
+  As is done with $n.
+\f
+Changes in version 1.32, 2002-01-23:
+
+* Fix Yacc output file names
+
+* Portability fixes
+
+* Italian, Dutch translations
 \f
 Changes in version 1.31, 2002-01-14:
 
 \f
 Changes in version 1.31, 2002-01-14:
 
@@ -65,6 +218,7 @@ Changes in version 1.31, 2002-01-14:
 
 * Better C++ compliance
   The output parsers try to respect C++ namespaces.
 
 * Better C++ compliance
   The output parsers try to respect C++ namespaces.
+  [This turned out to be a failed experiment, and it was reverted later.]
 
 * Reduced Grammars
   Fixed bugs when reporting useless nonterminals.
 
 * Reduced Grammars
   Fixed bugs when reporting useless nonterminals.
@@ -122,7 +276,7 @@ Changes in version 1.31, 2002-01-14:
 * --output
   New, aliasing `--output-file'.
 \f
 * --output
   New, aliasing `--output-file'.
 \f
-Changes in version 1.30:
+Changes in version 1.30, 2001-10-26:
 
 * `--defines' and `--graph' have now an optionnal argument which is the
   output file name. `-d' and `-g' do not change, they do not take any
 
 * `--defines' and `--graph' have now an optionnal argument which is the
   output file name. `-d' and `-g' do not change, they do not take any
@@ -245,3 +399,24 @@ Output file does not redefine const for C++.
 Local Variables:
 mode: outline
 End:
 Local Variables:
 mode: outline
 End:
+
+-----
+
+Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Autoconf.
+
+GNU Autoconf is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Autoconf is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with autoconf; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.