[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bison version 1.875 available

From: Paul Eggert
Subject: Bison version 1.875 available
Date: Wed, 1 Jan 2003 02:06:36 -0800 (PST)

Bison 1.875 is now available for download.

GNU Bison is a general-purpose parser generator that converts a
grammar description for an LALR(1) context-free grammar into a C
program to parse that grammar.  Once you are proficient with Bison,
you may use it to develop a wide range of language parsers, from those
used in simple desk calculators to complex programming languages.

Bison is upward compatible with Yacc: all properly-written Yacc
grammars ought to work with Bison with no change.  Anyone familiar
with Yacc should be able to use Bison with little trouble.  You need
to be fluent in C programming in order to use Bison or to understand
this manual.

This release fixes several compatibility problems and bugs found in
1.75; details can be found under "NEWS" below.  The version number
1.875 reflects our intention that we are asymptotically approaching
Bison 2.0.

The most significant changes between Bison 1.35 and 1.875 are:

1. Many limitations on parser size have been removed.

2. A GLR parser output is available, which makes it possible to parse
   any context free grammar, included ambiguous grammars.  This typically
   allows one to parse ``naturally'' contrived grammars such as C++'s.
   This is contributed by Paul Hilfinger.

3. The machinery has been revamped to ease the creation of new kinds of

This release is the result of the efforts from Robert Anisko, Akim
Demaille, Paul Eggert, Paul Hilfinger, and many others.

You may find GNU Bison at the following location:

  ftp://ftp.gnu.org/gnu/bison/bison-1.875.tar.gz       (1,023,296 bytes)
  ftp://ftp.gnu.org/gnu/bison/bison-1.875.tar.bz2      (  814,922 bytes)

Soon it will also appear on the GNU mirrors listed here:


Here are the MD5 and SHA1 signatures:

b7f8027b249ebd4dd0cc948943a71af0  bison-1.875.tar.bz2
278515c1195194cad633bf40c892f512  bison-1.875.tar.gz
0cacfa8b557135021814bcd7e43de0bb0cc9d68e  bison-1.875.tar.bz2
6176c15472293e57f007d95954b205d01e7d7d6c  bison-1.875.tar.gz

Please report bugs by email to <address@hidden>.

For more information about Bison, please see


Changes in version 1.875, 2003-01-01:

* The documentation license has been upgraded to version 1.2
  of the GNU Free Documentation License.

* syntax error processing

  - In Yacc-style parsers YYLLOC_DEFAULT is now used to compute error
    locations too.  This fixes bugs in error-location computation.

  - %destructor
    It is now possible to reclaim the memory associated to symbols
    discarded during error recovery.  This feature is still experimental.

  - %error-verbose
    This new directive is preferred over YYERROR_VERBOSE.

  - #defining yyerror to steal internal variables is discouraged.
    It is not guaranteed to work forever.

* POSIX conformance

  - Semicolons are once again optional at the end of grammar rules.
    This reverts to the behavior of Bison 1.33 and earlier, and improves
    compatibility with Yacc.

  - `parse error' -> `syntax error'
    Bison now uniformly uses the term `syntax error'; formerly, the code
    and manual sometimes used the term `parse error' instead.  POSIX
    requires `syntax error' in diagnostics, and it was thought better to
    be consistent.

  - The documentation now emphasizes that yylex and yyerror must be
    declared before use.  C99 requires this.

  - Bison now parses C99 lexical constructs like UCNs and
    backslash-newline within C escape sequences, as POSIX 1003.1-2001 requires.

  - File names are properly escaped in C output.  E.g., foo\bar.y is
    output as "foo\\bar.y".

  - Yacc command and library now available
    The Bison distribution now installs a `yacc' command, as POSIX requires.
    Also, Bison now installs a small library liby.a containing
    implementations of Yacc-compatible yyerror and main functions.
    This library is normally not useful, but POSIX requires it.

  - Type clashes now generate warnings, not errors.

  - If the user does not define YYSTYPE as a macro, Bison now declares it
    using typedef instead of defining it as a macro.
    For consistency, YYLTYPE is also declared instead of defined.

* Other compatibility issues

  - %union directives can now have a tag before the `{', e.g., the
    directive `%union foo {...}' now generates the C code
    `typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility.
    The default union tag is `YYSTYPE', for compatibility with Solaris 9 Yacc.
    For consistency, YYLTYPE's struct tag is now `YYLTYPE' not `yyltype'.
    This is for compatibility with both Yacc and Bison 1.35.

  - `;' is output before the terminating `}' of an action, for
    compatibility with Bison 1.35.

  - Bison now uses a Yacc-style format for conflict reports, e.g.,
    `conflicts: 2 shift/reduce, 1 reduce/reduce'.

  - `yystype' and `yyltype' are now obsolescent macros instead of being
    typedefs or tags; they are no longer documented and are planned to be
    withdrawn in a future release.

* GLR parser notes

  - GLR and inline
    Users of Bison have to decide how they handle the portability of the
    C keyword `inline'.

  - `parsing stack overflow...' -> `parser stack overflow'
    GLR parsers now report `parser stack overflow' as per the Bison manual.

* Bison now warns if it detects conflicting outputs to the same file,
  e.g., it generates a warning for `bison -d -o foo.h foo.y' since
  that command outputs both code and header to foo.h.

* #line in output files
  - --no-line works properly.

* Bison can no longer be built by a K&R C compiler; it requires C89 or
  later to be built.  This change originally took place a few versions
  ago, but nobody noticed until we recently asked someone to try
  building Bison with a K&R C compiler.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]