[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#336978: ITP: frown -- a parser generator for Haskell 98

Package: wnpp
Severity: wishlist
Owner: Arjan Oosting <arjanoosting@home.nl>

* Package name    : frown
  Version         : 0.6
  Upstream Author : Ralf Hinze <ralf@informatik.uni-bonn.de>
* 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
 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
  - 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 



Reply to: