[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Bison 1.49c
From: |
Akim Demaille |
Subject: |
Bison 1.49c |
Date: |
27 Sep 2002 18:54:54 +0200 |
User-agent: |
Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Honest Recruiter) |
GNU Bison 1.49c, which is our 1.50 candidate, is released!
Because the changes within Bison were ambitious, and because some
people already need some of the new features to release their own
package, this release is made although there is still work in
progress. Nevertheless, there is no known problem with the LALR
parsers: you can safely replace your old Bison copy with this release.
The most significant changes between Bison 1.35 and 1.50 are:
1. most, if not all, the limitations on the size are dropped,
2. a GLR parser output is available, which makes it possible to parse
any context free grammar, included ambiguous grammars. This typically
allows to parses ``naturally'' contrived grammars such as C++'s.
This is contributed by Paul Hilfinger.
3. the machinery was revamped to ease the creation of new parser types.
Work in progress include:
1. a C++ LALR parser
2. a Java LALR parser
3. means to free semantic value included during error recovery
4. YYPRINT replacement
and many other things.
You may find GNU Bison at the following location:
ftp://alpha.gnu.org/gnu/bison/bison-1.49c.tar.gz (944K)
ftp://alpha.gnu.org/gnu/bison/bison-1.49c.tar.bz2 (754K)
And here are xdelta-style diffs
ftp://alpha.gnu.org/gnu/bison/bison-1.49b-1.49c.xdelta (69K)
Here are the MD5 and SHA1 signatures for the compressed tar files:
e2c75c13ffe11ca209b65ccbb130fb1e bison-1.49c.tar.gz
f2f76c86e8f226702734f721a2cc7b96 bison-1.49c.tar.bz2
b00b8973e25433b35d672798f9ca9705d8f863f0 bison-1.49c.tar.gz
0d774bc00a506194de9337f2c5da1e4accc4ff28 bison-1.49c.tar.bz2
Special thanks to Paul Eggert, Robert Anisko, and Hans Aberg.
NEWS:
Changes in version 1.49c:
* 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.
* Useless rules
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 useless useful
%%
exp: '0' %prec useful;
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.
* 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
error messages instead of `$end', which remains being the default.
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.
ChangeLog entries:
**********************************************************************
ChangeLog 27 Sep 2002 14:40:23 -0000 1.839
**********************************************************************
2002-09-27 Akim Demaille <address@hidden>
Version 1.49c.
2002-09-27 Akim Demaille <address@hidden>
* configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7.
(Because of AC_LIBSOURCE).
2002-09-27 Akim Demaille <address@hidden>
Playing with Autoscan.
* configure.ac: Remove the old LIBOBJ tweaks.
(AC_REPLACE_FUNCS): Add strrchr and strtol.
* lib/strrchr.c: New.
* lib/strtol.c: New, from the Coreutils 4.5.1.
2002-09-27 Akim Demaille <address@hidden>
Playing with Autoscan.
* m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New.
* lib/Makefile.am (libbison_a_SOURCES): No longer include
argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd.
* lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the
Coreutils 4.5.1.
2002-09-24 Akim Demaille <address@hidden>
* doc/bison.texinfo (Stack Overflow): xref to Recursion.
(Frequently Asked Questions, Parser Stack Overflow): New.
2002-09-13 Akim Demaille <address@hidden>
Playing with autoscan.
* src/reader.c (get_merge_function): Use xstrdup, not strdup.
* src/files.c (skeleton_find): Remove, unused.
* m4/memcmp.m4: New, from the Coreutils 4.5.1.
* m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP.
2002-09-13 Akim Demaille <address@hidden>
* configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3.
* Makefile.am (AUTOMAKE_OPTIONS): Don't.
2002-09-13 Akim Demaille <address@hidden>
* configure.ac: Require 2.54.
s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/.
s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/.
* m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4:
Remove, provided by Autoconf macros.
2002-09-12 Akim Demaille <address@hidden>
* m4/prereq.m4: Update, from Coreutils 4.5.1.
2002-09-12 Akim Demaille <address@hidden>
* m4/prereq.m4: Update, from Fileutils 4.1.5.
* configure.ac (jm_PREREQ_TEMPNAME): Invoke it.
Reported by Martin Mokrejs.
2002-09-10 Akim Demaille <address@hidden>
* src/parse-gram.y: Associate a human readable string to each
token type.
* tests/regression.at (Invalid inputs): Adjust.
2002-09-10 Gary V. Vaughan <address@hidden>
* tests/Makefile.am ($(srcdir)/package.m4): Bison now ships
with an Autoconf-2.5x style configure.ac.
2002-09-06 Paul Eggert <address@hidden>
* doc/bison.texinfo (Conditions): Make explicit that the GPL
exception applies only to yacc.c. This is a modification of a
patch originally suggested by Akim Demaille.
2002-09-06 Akim Demaille <address@hidden>
* data/c.m4 (b4_copyright): Move the GPL exception comment from
here to...
* data/yacc.c: here.
* data/lalr1.cc (struct yyltype): Don't define it, since we use
LocationType.
(b4_ltype): Default to yy::Location from location.hh.
2002-09-04 Jim Meyering <address@hidden>
* data/yacc.c: Guard the declaration of yytoknum also with
`#ifdef YYPRINT', so it is declared only when used.
2002-09-04 Akim Demaille <address@hidden>
* configure.in: Rename as...
* configure.ac: this.
Bump to 1.49c.
2002-09-04 Akim Demaille <address@hidden>
* src/assoc.c, src/closure.c, src/gram.c, src/injections.c,
* src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't
translate maintainer only messages.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Bison 1.49c,
Akim Demaille <=