The Marpa parser

Jeffrey Kegler's website for Marpa, his new parsing algorithm


Jeffrey Kegler's website


The Ocean of Awareness blog: home page, chronological index, and annotated index.

Marpa::R2 (active distribution): CPAN | MetaCPAN

Marpa::XS (stable distribution): CPAN | MetaCPAN

Mailing List (quite active):

Repository of stable code: github Experimental repository: github

I hope Marpa will become the standard for parsing languages that are too complex for regular expressions to handle. Marpa's current release is Marpa::R2.

What Marpa Does

What Marpa is

Marpa is a new parsing algorithm with a decades-long heritage. Its lineage starts with the algorithm invented by Jay Earley. Marpa is the first algorithm to combine the improvements to Earley's algorithm made by Joop Leo with those discovered by John Aycock and R. Nigel Horspool. Marpa's "situational awareness", and Ruby Slippers parsing, are a new feature.

Learning more about Marpa

The best places to learn about Marpa are the documentation of Marpa::R2, its current release, and my blog, Ocean of Awareness. Many of my blog posts are tutorials and readers have found these especially helpful. To get oriented in my blog, start at its annotated list of the most interesting Marpa posts. Discussion of Marpa currently centers around the "marpa parser" Google Group.


For those interested in the mathematics behind Marpa, there's a paper with pseudocode, and proofs of correctness and of my complexity claims.

Other resources

Libmarpa is a C library, and is the core of Marpa.

Marpa internals: These are resources of interest only to those working on the internals of Marpa itself -- "bleeding edge" documentation, etc.