Bison version 1.875 available

Paul Eggert <>
1 Jan 2003 12:52:57 -0500

          From comp.compilers

Related articles
Bison version 1.875 available (Paul Eggert) (2003-01-01)
Re: Bison version 1.875 available (2003-01-04)
Re: Bison version 1.875 available (2003-01-07)
Re: Bison version 1.875 available - GLR Parsing theory references (Aaron Gray) (2003-01-07)
Re: Bison version 1.875 available (Mats Kindahl) (2003-01-07)
Re: Bison version 1.875 available eggert@CS.UCLA.EDU (Paul Eggert) (2003-01-07)
Re: Bison version 1.875 available - GLR Parsing theory references (Derek M Jones) (2003-01-12)
[2 later articles]
| List of all articles for this month |

From: Paul Eggert <>
Newsgroups: comp.compilers
Date: 1 Jan 2003 12:52:57 -0500
Organization: Compilers Central
Keywords: yacc, available, parse
Posted-Date: 01 Jan 2003 12:52:57 EST

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: (1,023,296 bytes) ( 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 <>.

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.

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.