
Marpa::r2 parses any language whose grammar can be written in bnf. that includes recursive grammars, ambiguous grammars, infinitely ambiguous grammars and grammars with useless or empty productions. marpa does both left- and right-recursion in linear time -- in fact if a grammar is in any class currently in practical use, marpa will parse it in linear time.