Bug#336978: ITP: frown -- a parser generator for Haskell 98
Owner: Arjan Oosting <firstname.lastname@example.org>
* Package name : frown
Version : 0.6
Upstream Author : Ralf Hinze <email@example.com>
* URL : http://www.informatik.uni-bonn.de/~ralf/frown/index.html
* License : GPL version 2
Description : parser generator for Haskell 98
Frown is an LALR(k) parser generator for Haskell 98 written in
Its salient features are:
- The generated parsers are time and space efficient. On the
downside, the parsers are quite large.
- Frown generates four different types of parsers. As a common
characteristic, the parsers are genuinely functional
(ie `table-free'); the states of the underlying LR automaton are
encoded as mutually recursive functions. Three output formats use
a typed stack representation, one format due to Ross Paterson
(code=stackless) works even without a stack.
- Encoding states as functions means that each state can be treated
individually as opposed to a table driven-approach, which
necessitates a uniform treatment of states. For instance,
look-ahead is only used when necessary to resolve conflicts.
- Frown comes with debugging and tracing facilities; the standard
output format due to Doaitse Swierstra (code=standard) may be
useful for teaching LR parsing.
- Common grammatical patterns such as repetition of symbols can be
captured using rule schemata. There are several predefined rule
- Terminal symbols are arbitrary variable-free Haskell patterns or
guards. Both terminal and nonterminal symbols may have an
arbitrary number of synthesized attributes.
- Frown comes with extensive documentation; several example grammars are included.
Furthermore, Frown supports the use of monadic lexers, monadic
semantic actions, precedences and associativity, the generation of
backtracking parsers, multiple start symbols, error reporting and a
weak form of error correction.
A preliminary version of this package will soon be available on