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.
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
Before, Bison reported the useless rules, but, although not used,
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 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 defaults.
For instance
%token YYEOF 0
or
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: