Marpa resources

Mon, 03 Sep 2012

Marpa::R2
is now beta.
Marpa is a new parsing algorithm,
based on decades of prior art.
It is a practical and efficient solution
targeted at all parsing problems that are too
complex for regular expressions.

The
Marpa::R2
module is the most recent Marpa module.
Marpa is also available as the
Marpa::XS
module,
which is stable and bug-fix only.
Both Marpa modules:

Parse everything you can write in BNF.

Parse all
classes of grammar in practical use today in linear time.

Parse all BNF grammars
in times considered theoretically optimal.
For unambiguous grammars, Marpa is never worse than
O(n2).
For ambiguous grammars, Marpa is never worse than
O(n3).
Marpa never goes exponential.

Are fully aware, at every point in the parse, of
all the rules they are parsing,
how far into them they have proceeded,
and of what tokens they expect next.
Especially with Marpa::R2,
this information is available
to the application
conveniently and efficiently.

Do not need to be handwritten.
Marpa is available as a open-source library.
It is written in C,
and the C library can be used
directly
or via
a Perl interface.

For general BNF parsing,
do not require
the user to craft
a lookahead or backtracking strategy -- Marpa
does not use lookahead and never backtracks.

Come
with the traditional theoretical apparatus of
proofs based on prior literature.

Marpa::R2
is a major rewrite of the Marpa internals.
The most visible of these changes:

Marpa::R2 is faster.

Marpa::R2 is easier to install.
In particular the dependency on Glib has been removed.
Marpa::R2 now has no non-core CPAN dependencies.

Marpa::R2's internal symbols are now invisible
to the user, even when tracing and debugging.