Contributing to Happy
Source Code Repository
Happy is hosted on GitHub. As previously discussed in `bug-reports`_, we use the built-in GitHub issue tracker for Happy. We also use GitHub pull requests for managing changes; feel free to submit them!
Repo Layout
app
: The source code for the Happy executable itselflib/*
: The various internal libraries that make up thehappy-lib
package. This library is used to implement thehappy
executable behind the scenes, and is available for reuse for other purposes.doc
: The documentationThis is in reStructured Text format as is common for many Haskell tools’ documentation. To build the documentation, use [Sphinx](https://www.sphinx-doc.org/).
examples
: Various examples of using Happy
Build Instructions
Happy is mostly a normal Cabal-packaged Haskell executable:
$ cabal build
The only wrinkle is that changing Happy’s own parser (i.e. the frontend
component that parses .y
files) requires an existing Happy executable on
the PATH to run lib/frontend/boostrap.sh
.
Do not modify these files by hand:
lib/frontend/src/Happy/Frontend/Parser.hs
lib/frontend/src/Happy/Frontend/AttrGrammar/Parser.hs
Instead, edit these files:
lib/frontend/boot-src/Parser.ly
lib/frontend/boot-src/AttrGrammarParser.ly
and regenerate the .hs
-files with:
$ lib/frontend/bootstrap.sh