136 lines
5.3 KiB
Plaintext
136 lines
5.3 KiB
Plaintext
GNU Bison is a general-purpose parser generator that converts an annotated
|
|
context-free grammar into a deterministic LR or generalized LR (GLR) parser
|
|
employing LALR(1) parser tables. Bison can also generate IELR(1) or
|
|
canonical LR(1) parser tables. Once you are proficient with Bison, you can
|
|
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
|
|
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, C++, D or Java
|
|
programming in order to use Bison.
|
|
|
|
Bison and the parsers it generates are portable, they do not require any
|
|
specific compilers.
|
|
|
|
GNU Bison's home page is https://gnu.org/software/bison/.
|
|
|
|
# Installation
|
|
## Build from git
|
|
The [README-hacking.md file](README-hacking.md) is about building, modifying
|
|
and checking Bison. See its "Working from the Repository" section to build
|
|
Bison from the git repo. Roughly, run:
|
|
|
|
$ git submodule update --init
|
|
$ ./bootstrap
|
|
|
|
then proceed with the usual `configure && make` steps.
|
|
|
|
## Build from tarball
|
|
See the [INSTALL file](INSTALL) for generic compilation and installation
|
|
instructions.
|
|
|
|
Bison requires GNU m4 1.4.6 or later. See
|
|
https://ftp.gnu.org/gnu/m4/m4-1.4.6.tar.gz.
|
|
|
|
## Running a non installed bison
|
|
Once you ran `make`, you might want to toy with this fresh bison before
|
|
installing it. In that case, do not use `src/bison`: it would use the
|
|
*installed* files (skeletons, etc.), not the local ones. Use `tests/bison`.
|
|
|
|
## Colored diagnostics
|
|
As an experimental feature, diagnostics are now colored, controlled by the
|
|
`--color` and `--style` options.
|
|
|
|
To use them, install the libtextstyle library, 0.20.5 or newer, before
|
|
configuring Bison. It is available from https://alpha.gnu.org/gnu/gettext/,
|
|
for instance https://alpha.gnu.org/gnu/gettext/libtextstyle-0.20.5.tar.gz,
|
|
or as part of Gettext 0.21 or newer, for instance
|
|
https://ftp.gnu.org/gnu/gettext/gettext-0.21.tar.gz.
|
|
|
|
The option --color supports the following arguments:
|
|
- always, yes: Enable colors.
|
|
- never, no: Disable colors.
|
|
- auto, tty (default): Enable colors if the output device is a tty.
|
|
|
|
To customize the styles, create a CSS file, say `bison-bw.css`, similar to
|
|
|
|
/* bison-bw.css */
|
|
.warning { }
|
|
.error { font-weight: 800; text-decoration: underline; }
|
|
.note { }
|
|
|
|
then invoke bison with `--style=bison-bw.css`, or set the `BISON_STYLE`
|
|
environment variable to `bison-bw.css`.
|
|
|
|
In some diagnostics, bison uses libtextstyle to emit special escapes to
|
|
generate clickable hyperlinks. The environment variable
|
|
`NO_TERM_HYPERLINKS` can be used to suppress them. This may be useful for
|
|
terminal emulators which produce garbage output when they receive the escape
|
|
sequence for a hyperlink. Currently (as of 2020), this affects some versions
|
|
of emacs, guake, konsole, lxterminal, rxvt, yakuake.
|
|
|
|
## Relocatability
|
|
If you pass `--enable-relocatable` to `configure`, Bison is relocatable.
|
|
|
|
A relocatable program can be moved or copied to a different location on the
|
|
file system. It can also be used through mount points for network sharing.
|
|
It is possible to make symlinks to the installed and moved programs, and
|
|
invoke them through the symlink.
|
|
|
|
See "Enabling Relocatability" in the documentation.
|
|
|
|
## Internationalization
|
|
Bison supports two catalogs: one for Bison itself (i.e., for the
|
|
maintainer-side parser generation), and one for the generated parsers (i.e.,
|
|
for the user-side parser execution). The requirements between both differ:
|
|
bison needs ngettext, the generated parsers do not. To simplify the build
|
|
system, neither are installed if ngettext is not supported, even if
|
|
generated parsers could have been localized. See
|
|
https://lists.gnu.org/r/bug-bison/2009-08/msg00006.html for more
|
|
details.
|
|
|
|
# Questions
|
|
See the section FAQ in the documentation (doc/bison.info) for frequently
|
|
asked questions. The documentation is also available in PDF and HTML,
|
|
provided you have a recent version of Texinfo installed: run `make pdf` or
|
|
`make html`.
|
|
|
|
If you have questions about using Bison and the documentation does not
|
|
answer them, please send mail to <help-bison@gnu.org>.
|
|
|
|
# Bug reports
|
|
Please send bug reports to <bug-bison@gnu.org>. Be sure to include the
|
|
version number from `bison --version`, and a complete, self-contained test
|
|
case in each bug report.
|
|
|
|
# Copyright statements
|
|
For any copyright year range specified as YYYY-ZZZZ in this package, note
|
|
that the range specifies every single year in that closed interval.
|
|
|
|
<!--
|
|
|
|
LocalWords: parsers ngettext Texinfo pdf html YYYY ZZZZ ispell american md
|
|
LocalWords: MERCHANTABILITY GLR LALR IELR submodule init README src bw
|
|
LocalWords: Relocatability symlinks symlink
|
|
|
|
Local Variables:
|
|
mode: markdown
|
|
fill-column: 76
|
|
ispell-dictionary: "american"
|
|
End:
|
|
|
|
Copyright (C) 1992, 1998-1999, 2003-2005, 2008-2015, 2018-2021 Free
|
|
Software Foundation, Inc.
|
|
|
|
This file is part of GNU bison, the GNU Compiler Compiler.
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
|
Texts. A copy of the license is included in the "GNU Free
|
|
Documentation License" file as part of this distribution.
|
|
|
|
-->
|