Parse::RecDescent incrementally generates top-down recursive-descent
text parsers from simple yacc-like grammar specifications. It
provides:
* Regular expressions or literal strings as terminals (tokens),
* Multiple (non-contiguous) productions for any rule,
* Repeated and optional subrules within productions,
* Full access to Perl within actions specified as part of the
grammar,
* Simple automated error reporting during parser generation and
parsing,
* The ability to commit to, uncommit to, or reject particular
productions during a parse,
* The ability to pass data up and down the parse tree ("down" via
subrule argument lists, "up" via subrule return values)
* Incremental extension of the parsing grammar (even during a
parse),
* Precompilation of parser objects,
User-definable reduce-reduce conflict resolution via "scoring" of
matching productions.