> Abstract: Frown is an LALR(k) parser generator for Haskell 98 written in Haskell 98.
> 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 schemata.
> - 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.

- Contents
- Introduction
  - Obtaining and installing Frown
  - Reporting bugs
  - License
  - Credits
- Quick start
- Tour de Frown
  - Preliminaries: monads
  - Basic features
  - Error reporting and correction
  - Advanced features
- Tips and tricks
  - Irrefutable patterns
  - Inherited attributes
  - Dealing with conflicts
  - Multiple attributes
- Reference manual
  - Lexical syntax of Frown
  - Syntax of Frown
  - Predefined schemes
  - Output formats
  - Invocation and options
- References

> This document was translated from LATEX by HEVEA.