Marpa ist der beste Parsingalgorithmus seit Jahrzehnten, Implementierung mit demselben Namen liegt in C vor.
* Marpa gibt vernünftige Fehlermeldungen aus, wenn Nonterminals nicht erreichbar oder reifizierbar sind, wenn die Grammatik Zyklen enthält oder nicht null-nicht-ambiguierbar ist. (LALR versagt hier.)
* Marpa geht sinnvoll mit Mehrdeutigkeit um und liefert alle möglichen Parsebäume. (PEG versagt hier.)
* Marpa schert sich nicht um First Set Clash oder Shift-Reduce Conflict; alle kontext-freien Grammatiken werden akzeptiert und in höchstens O(n**3) geparst. (yacc versagt hier.)
* Marpa parst alle LR-regulären Grammatiken in linearer Zeit. Wenn deine Grammatik mittels Recursive Descent geparst werden kann, dann trifft das zu. Marpa enthält ein Informatikabhandlung mit Beweisen der Korrektheit und Komplexitätsaussagen.
* Marpa weiß jederzeit, wo genau der Parsevorgang fehlschlug und aus welchem Grund, an welchen Regeln schon gearbeitet wurde und wie weit in jeder hinein, und liefert konkrete und korrekte Fehlermeldungen. Falls der Lexer ein ungültiges Token übergibt, kann Marpa Aussagen treffen, welches akzeptable Token an dieser Stelle sind. Marpa kann den Lexer auch darüber informieren, und so ein passendes Token einfach aus der Luft greifen oder die Regeln zur Laufzeit anpassen, um den Parsevorgang fortzusetzen, als ob der Fehler nicht aufgetreten wäre.