which parser to use

Paul McGuire ptmcg at austin.rr.com
Wed Feb 23 03:21:29 EST 2005


a_nuther at geek.org wrote:
> I'm building something that requires parsing a rather complex
> language. I'd like to do the whole application, including the
> lex/parse phase, in Python (for development/debug speed), and only
> move parts of it to a compiled language if execution speed absolutely
> dictates. So, what i'm looking for in a Python parser is:
>
>     1) reliability (don't want to debug a parser)
>     1) flexibility (i do a lot of refactoring)
>     2) E/BNF friendliness (working from a spec)
>     3) speed (moderate speed will do; glacial won't)
>
> Does anyone have any familiarity with some of the several Python
> parsers out there? Any pointers to comparisons (as opposed to
surveys)
> of _several_ of the Python parsers would be much appereciated. (I've
> seen the YAPPS/Spark comparison.) If none of the Python parsers
really
> fit the bill, any thoughts on ANTLR, Spirit, etc?
>
> Thanks in advance,
> E

Depending on just *how* complex your EBNF is, pyparsing may be
suitable.  It has been used for Verilog, DOT, TeX, and agent language
parsing.  Pyparsing is a "combinator", in which you assemble the
grammar using expression objects such as Literal, Word, OneOrMore,
etc., all in pure Python code - no separate lex/yacc syntax, or code
generation/synchronization steps.  It *may* be somewhat slow for your
purposes, but I find the grammars to be readable and easily maintained
and extended.

Download pyparsing at http://pyparsing.sourceforge.net.

-- Paul




More information about the Python-list mailing list