publicly
and privately I hear from folks who
tell me that
Marpa
is an OO
superclass waiting to happen.
I can see their point.
If there ever was a case for code reuse,
the Marpa algorithm is one.
On the other hand,
any non-trivial use of
Marpa requires additional semantics,
so that the Marpa classes
walk, swim and quack
very much like abstract type classes.
Furthermore, the additional semantics
that Marpa needs comes in pieces -- semantic actions.
And even though these piec…
is a general context-free parser.
What does that mean?
For a grammar writer, it means that he doesn't
need to worry that the next rule he adds to the grammar
is the one that makes it hit the invisible wall that
most other parser generators set up.
If you can write it in BNF, Marpa will parse it.
Which makes
Marpa::XS
good at incremental development.
As you develop your Marpa grammar,
you can track the tradeoffs you are making
between features and efficiency.
Chances are,…
Marpa::XS
does not come with a lexer,
I'd respond that,
in a very real sense it does --
Perl.
Perl5 is a powerful lexical analyzer.
If you're trying to figure out how to write your first Marpa
parser,
I'd recommend a close look at
Wolfgang Kinkeldei's recent posting about his
Marpa-powered CSS parser.
Wolfgang lays his parser out in a very elegant fashion,
and I find his code makes an excellent templat…