frown

LALR(k) parser generator

Description

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, and 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.

Upload more screenshots

Please help extend the collection of screenshots. Just make a screenshot and upload it here. You don't need to register or anything.

Upload a screenshot

Hint: upload an image here from your clipboard with Ctrl-V


Homepage

http://hackage.haskell.org/package/frown


Install this software package

If the package is available for the distribution you are currently using on your computer then install the software by clicking on…

Install frown