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-libpackage. This library is used to implement thehappyexecutable 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