Complete documentation can be found in the directory ‘doc’, in
DocBook XML format. To format the documentation, the DocBook-Tools
suite (see http://wiki.docbook.org/DocBookTools)
provides all the bits & pieces you need. Alternatively, pre-formatted
documentation is available from Happy’s homepage (URL above).

The directory ‘examples’ contains some example parsers that use Happy.

For information on copying and distributing this program, see the file
LICENSE in this directory.

-----------------------------------------------------------------------------Changes from version 1.15 to 1.16

* Switch to a Cabal build system: you need a recent version of Cabal (1.1.6 or later). If you have GHC 6.4.2, then you need to upgrade Cabal before building Happy. GHC 6.6 is fine.

* New %error directive

* New production forms: {%% .. } and {%^ .. }

* Added Attribute Grammar support, by Robert Dockins

-----------------------------------------------------------------------------Changes from version 1.14 to 1.15

* New %expect directive * the list of tokens passed to happyError now includes the current token (not %lexer). * added support for ambiguous grammars via Generalized LR parsing * added %partial to indicate a parser that can return a result before EOF is reached.

-----------------------------------------------------------------------------Changes from version 1.13 to 1.14

* New meta-variable $> represents the rightmost token.

* Happy's OPTIONS pragma is merged with an existing one in the grammar file, if any.

-----------------------------------------------------------------------------Changes from version 1.11 to 1.13

* Support for newer versions of GHC (>= 5.04).

* Addition of an experimental flag: --strict.

-----------------------------------------------------------------------------Changes from version 1.10 to 1.11

* tokens no longer have a default precedence - if you want a token to have a precedence, you have to declare it.

* bugfix to templates for GHC on 64-bit platforms.

-----------------------------------------------------------------------------Changes from version 1.9 to 1.10

* bugfixes, and minor performance improvements,

* most of the examples work again.

-----------------------------------------------------------------------------Changes from version 1.8 to 1.9

* A grammar may now contain several entry points, allowing several parsers to share parts of the grammar.

* Some bugfixes.

-----------------------------------------------------------------------------Changes from version 1.6 to 1.8

* Parser table compression, and more efficient table encoding when used with GHC. Large grammars can now be compiled in much less time/space than before using GHC.

* A debug option which causes the generated parser to print tracing information at each step during parsing.

-----------------------------------------------------------------------------Changes from version 1.5 to 1.6

* Now written in, and generates, Haskell 98.

* Several bug fixes.

* A new option, -c, generates parsers that use GHC's unsafeCoerce# primitive to speed up parsing and cut down the binary size. The -c option can only be used with the -g (GHC extensions) option.

* Parsers generated with the -g option will compile to smaller binaries now - some sources of parser-bloat were identified and squished.

* Happy has a new Open Source license, based on the BSD license.

* A sample Haskell parser using Happy is included.

-----------------------------------------------------------------------------Changes from version 1.2 to version 1.5

* Many bug fixes to the error recovery support, found by experimenting with the Haskell grammar and layout.

* Happy is about 5 times faster on large examples, due to some changes in the LALR(1) algorithms.

-----------------------------------------------------------------------------Changes from version 0.9a to version 1.2

* Supports Haskell 1.4

* Lots of bugs fixed

* Performance: the parser generator is at least 20% faster, and generated parsers should be faster due to the replacement of a data type with a newtype.

* Simple error recovery: designed to be enough to implement the Haskell layout rule.

* Revamped monad support: the monad can now be threaded through the lexer, enabling passing of state between the parser and the lexer (handy for the Haskell layout rule), and consistent error handling.

* The %newline feature is removed, the same effect can be achieved using the new monad support.

-----------------------------------------------------------------------------Changes from version 0.8 to 0.9: