This directory contains the Bison parser generator.

See the file INSTALL for generic compilation and installation instructions.
See the file doc/FAQ for frequently asked questions.

Bison requires GNU m4 1.4.3 or later.  See:

ftp://ftp.gnu.org/gnu/m4/m4-1.4.3.tar.gz

Bison can work with pre-1.4.3 distributions of GNU m4 if they are
sufficiently patched, but if you encounter a bug with an older
distribution and report a bug we will probably suggest that you
upgrade to 1.4.3 as the first step in trying to fix it.

Please send bug reports to <bug-bison@gnu.org>.  Please include the
version number from `bison --version', and a complete, self-contained
test case in each bug report.

If you have questions about using Bison and the documentation does
not answer them, please send mail to <help-bison@gnu.org>.

-----

Copyright (C) 1992, 1998, 1999, 2003, 2004, 2005 Free Software Foundation, Inc.

This file is part of Bison, the GNU Compiler Compiler.

Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with autoconf; see the file COPYING.  If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
