I like them, but I don't have a lot of experience with them. A non-grammar based parser for Quake 3 logfiles is the extent of my working parsers so far. Now, I've come a decent way since then, but I'm not the guy to fix B::CC -- I don't know C, for one thing.
Thanks for the interesting tip though -- reading the POD for it was fun.
| [reply] |
How about a pure perl XML parser? This is from Simon Cozens weekly summary of the p5p list for the week of 2/13 to 2/19. You can find a copy of this at http://www.perl.com.
Parsing XML
One of the targets for Perl 5.8 is to speed up XML parsing, but nobody
really has any idea how to do that. The current XML::Parser uses an
external library, which means that a lot of speed is lost in flapping
around in XS. The idea was mentioned of a pure-Perl version, which we
would then be able to ship in core. Jarkko says:
Okay, I lied. I do have an opinion: relying on an external library
to do XML parsing is weird. expat is nice and is a de facto
standard, and reinventing the wheel that has already been
extensively invented and debugged is silly in the extreme -- but we
are, after all, supposed to be The Text Processing Language.
Matt Sergeant, as ever, had good XML suggestions:
If you do that, I suggest/recommend at least doing it the Python
way - by letting XML experts (i.e. a SIG) discuss what would be the
best way to do it. Note also that ActivePerl ships with
XML::Parser, though in a few months it may not necessarily be the
best option any more.
He also pointed out that:
The speed problem is that expat is basically a callback/event based
parser, so you have a storm of events crossing the XS/Perl barrier,
meaning that you're constantly building SV's. Orchard can get
around this by doing the parsing to a tree structure in C. (Note
that Orchard is also based on expat). Or it can also do SAX based
event passing, but again that's about as slow as XML::Parser.
Doing it all in Perl is possible, but not entirely trivial to get
exactly right. XML has a lot of annoying nuances that were left in
from SGML, mostly to do with DTDs. And while I don't use most of
the annoying features, I think I'd be upset if the core Perl
started shipping an "XML" parser that wasn't fully XML compliant.
I wonder if the perl-xml mailing list could go chew on that and let us
know the best way to proceed.
End of quote...
----
Coyote
| [reply] |