By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,341 Members | 1,410 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,341 IT Pros & Developers. It's quick & easy.

which parser to use

P: n/a

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

Jul 18 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a

Check out SimpleParse/mxTextTools. Just an outstanding E/BNF driven
parser, very highly recommended.

<http://simpleparse.sourceforge.net/>

/Jean Brouwers

PS) See also

<http://www-128.ibm.com/developerworks/linux/library/l-simple.html>

<http://gnosis.cx/publish/programming/charming_python_b4.html>

There are descriptions of other Python-based parsers on this site
<http://gnosis.cx/TPiP/>

In article <87************@subopt.house-net>, <a_******@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

Jul 18 '05 #2

P: n/a
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.
--
------------------------------------------------------------------------
Miki Tebeka <mi*********@zoran.com>
http://tebeka.bizhat.com
The only difference between children and adults is the price of the toys
Jul 18 '05 #3

P: n/a
a_******@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

Jul 18 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.