which parser to use

A

a_nuther

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
 
M

Miki Tebeka

Hello E,
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?
I'm very happy with PLY (http://systems.cs.uchicago.edu/ply/).
I was used in several small parsers here and it's easy to maintain, works
in acceptable speed and IMO the code is very readable.
Also I find the documentation very good.

HTH.
 
P

Paul McGuire

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,772
Messages
2,569,593
Members
45,111
Latest member
VetaMcRae
Top