Ocean of Awareness
Tue, 12 Jun 2012
What is Marpa?
I am very
pleased to announce Marpa::R2
-- "Release 2" of the Marpa parser.
For those unfamiliar,
is something new in parsing --
it parses anything you can write in BNF and,
if your grammar is in one of the classes currently in practical use,
it parses it in linear time.
Marpa::R2's parse engine is written in optimized C,
so that Marpa::R2's speed is competitive with parsers of far less power.
An important feature of the Marpa
algorithm is "situational awareness".
Marpa knows at every point in the parse exactly how far it
has progressed in each rule,
and can share this information with the application.
The advantages of this go beyond error detection --
Marpa's situational awareness is accurate, graceful
and fast enough to be used as a parsing technique in its own
Ruby Slippers parsing.
and its interface is not yet frozen.
Those who want a stable version of Marpa should prefer
But Marpa::R2 does pass the same test suite as Marpa::XS,
and at least one module has already successfully converted to
Marpa::R2 is heavily refactored internally. I expect more
benefits of this refactoring to come over the next weeks,
in the form of new features.
Here are the new features available
in this first announced release of Marpa::R2:
- Marpa::R2 is faster than Marpa::XS.
The most visible speedup comes
from optimizing rules and tokens whose values do not matter, so
that the actual speedup varies greatly by application, but it is
often 20% or more.
- Marpa::R2 no longer requires Glib. Marpa::R2 now has no non-core
- Marpa::R2's internal grammar rewrites are now invisible to the user,
even when tracing.
Users migrating from Marpa::XS should be aware that,
while Marpa::R2's interface is similar to Marpa::XS's,
it is not fully compatible.
of incompatible changes can be found in the Marpa::R2 documentation.
posted at: 18:04 |
direct link to this entry