Happy is a parser generator system for Haskell, similar to the tool
`yacc' for C. Like `yacc', it takes a file containing an annotated BNF
specification of a grammar and produces a Haskell module containing a
parser for the grammar.

Happy is flexible: you can have several Happy parsers in the same
program, and several entry points to a single grammar. Happy can work
in conjunction with a lexical analyser supplied by the user (either
hand-written or generated by another program), or it can parse a stream
of characters directly (but this isn't practical in most cases).

As of version 1.5, Happy is capable of parsing full Haskell. We have a
Haskell parser that uses Happy, which will shortly be part of the
library collection distributed with GHC.

WWW: http://www.haskell.org/happy/

-- Simon Marlow <simonmar@microsoft.com>