bison-2.4.2 released [stable]

"Joel E. Denny" <>
Sat, 20 Mar 2010 15:29:10 -0400 (EDT)

          From comp.compilers

Related articles
bison-2.4.2 released [stable] (Joel E. Denny) (2010-03-20)
| List of all articles for this month |

From: "Joel E. Denny" <>
Newsgroups: comp.compilers
Date: Sat, 20 Mar 2010 15:29:10 -0400 (EDT)
Organization: Compilers Central
Keywords: bison, available
Posted-Date: 21 Mar 2010 11:38:58 EDT

Bison version 2.4.2 is now available. This is primarily a bug-fix
release. However, we are also taking this opportunity to update users
on our plans for Bison's %code and YYFAIL features. See NEWS below for

Here are the compressed sources: (2.2MB) (1.6MB)

Here are the GPG detached signatures[*]:

To reduce load on the main server, use a mirror listed at:

[*] You can use either of the above signature files to verify that
the corresponding file (without the .sig suffix) is intact. First,
be sure to download both the .sig file and the corresponding tarball.
Then, run a command like this:

    gpg --verify bison-2.4.2.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

    gpg --keyserver --recv-keys 263DF280

and rerun the `gpg --verify' command.

This release was bootstrapped with the following tools:
    Autoconf 2.65
    Automake 1.11.1
    Flex 2.5.34
    Gnulib v0.0-3424-g9d0ad65


* Changes in version 2.4.2 (2010-03-20):

** Some portability problems that resulted in failures and livelocks
      in the test suite on some versions of at least Solaris, AIX, HP-UX,
      RHEL4, and Tru64 have been addressed. As a result, fatal Bison
      errors should no longer cause M4 to report a broken pipe on the
      affected platforms.

** `%prec IDENTIFIER' requires IDENTIFIER to be defined separately.

    POSIX specifies that an error be reported for any identifier that does
    not appear on the LHS of a grammar rule and that is not defined by
    %token, %left, %right, or %nonassoc. Bison 2.3b and later lost this
    error report for the case when an identifier appears only after a
    %prec directive. It is now restored. However, for backward
    compatibility with recent Bison releases, it is only a warning for
    now. In Bison 2.5 and later, it will return to being an error.

** Detection of GNU M4 1.4.6 or newer during configure is improved.

** Warnings from gcc's -Wundef option about undefined YYENABLE_NLS,
      YYLTYPE_IS_TRIVIAL, and __STRICT_ANSI__ in C/C++ parsers are now

** %code is now a permanent feature.

    A traditional Yacc prologue directive is written in the form:


    To provide a more flexible alternative, Bison 2.3b introduced the
    %code directive with the following forms for C/C++:

        %code {CODE}
        %code requires {CODE}
        %code provides {CODE}
        %code top {CODE}

    These forms are now considered permanent features of Bison. See the
    %code entries in the section "Bison Declaration Summary" in the Bison
    manual for a summary of their functionality. See the section
    "Prologue Alternatives" for a detailed discussion including the
    advantages of %code over the traditional Yacc prologue directive.

    Bison's Java feature as a whole including its current usage of %code
    is still considered experimental.

** YYFAIL is deprecated and will eventually be removed.

    YYFAIL has existed for many years as an undocumented feature of
    deterministic parsers in C generated by Bison. Previously, it was
    documented for Bison's experimental Java parsers. YYFAIL is no longer
    documented for Java parsers and is formally deprecated in both cases.
    Users are strongly encouraged to migrate to YYERROR, which is
    specified by POSIX.

    Like YYERROR, you can invoke YYFAIL from a semantic action in order to
    induce a syntax error. The most obvious difference from YYERROR is
    that YYFAIL will automatically invoke yyerror to report the syntax
    error so that you don't have to. However, there are several other
    subtle differences between YYERROR and YYFAIL, and YYFAIL suffers from
    inherent flaws when %error-verbose or `#define YYERROR_VERBOSE' is
    used. For a more detailed discussion, see:

    The upcoming Bison 2.5 will remove YYFAIL from Java parsers, but
    deterministic parsers in C will continue to implement it. However,
    because YYFAIL is already flawed, it seems futile to try to make new
    Bison features compatible with it. Thus, during parser generation,
    Bison 2.5 will produce a warning whenever it discovers YYFAIL in a
    rule action. In a later release, YYFAIL will be disabled for
    %error-verbose and `#define YYERROR_VERBOSE'. Eventually, YYFAIL will
    be removed altogether.

    There exists at least one case where Bison 2.5's YYFAIL warning will
    be a false positive. Some projects add phony uses of YYFAIL and other
    Bison-defined macros for the sole purpose of suppressing C
    preprocessor warnings (from GCC cpp's -Wunused-macros, for example).
    To avoid Bison's future warning, such YYFAIL uses can be moved to the
    epilogue (that is, after the second `%%') in the Bison input file. In
    this release (2.4.2), Bison already generates its own code to suppress
    C preprocessor warnings for YYFAIL, so projects can remove their own
    phony uses of YYFAIL if compatibility with Bison releases prior to
    2.4.2 is not necessary.

** Internationalization.

    Fix a regression introduced in Bison 2.4: Under some circumstances,
    message translations were not installed although supported by the
    host system.

* Changes in version 2.4.1 (2008-12-11):

** In the GLR defines file, unexpanded M4 macros in the yylval and yylloc
      declarations have been fixed.

** Temporary hack for adding a semicolon to the user action.

    Bison used to prepend a trailing semicolon at the end of the user
    action for reductions. This allowed actions such as

        exp: exp "+" exp { $$ = $1 + $3 };

    instead of

        exp: exp "+" exp { $$ = $1 + $3; };

    Some grammars still depend on this `feature'. Bison 2.4.1 restores
    the previous behavior in the case of C output (specifically, when
    neither %language or %skeleton or equivalent command-line options
    are used) to leave more time for grammars depending on the old
    behavior to be adjusted. Future releases of Bison will disable this

** A few minor improvements to the Bison manual.

* Changes in version 2.4 (2008-11-02):

** %language is an experimental feature.

    We first introduced this feature in test release 2.3b as a cleaner
    alternative to %skeleton. Since then, we have discussed the possibility of
    modifying its effect on Bison's output file names. Thus, in this release,
    we consider %language to be an experimental feature that will likely evolve
    in future releases.

** Forward compatibility with GNU M4 has been improved.

** Several bugs in the C++ skeleton and the experimental Java skeleton have been

Post a followup to this message

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