Milarepa

A PerlBNFparser generator by Jeffrey Kegler
<jeffrey@netcom.com>. Milarepa takes a source grammar
written in a mixture of BNF and Perl and generates Perl
source, which, when enclosed in a simple wrapper, parses the
language described by the grammar. Milarepa is not restricted
to LRn grammars, and the parse logic follows directly from
the BNF. It handles ambiguous grammars, ambiguous tokens
(tokens which were not positively identified by the lexer) and
allows the programmer to change the start symbol. The grammar
may not be left recursive. The input must be divided into
sentences of a finite maximum length. There is no fixed
distinction between terminals and non-terminals, that is, a
symbol can both match the input AND be on the left hand side
of a production. Multiple Marpa grammars are allowed in a
single Perl program.