| 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-2022 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. |
| |
| --> |