[EMAIL PROTECTED] 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 -- http://mail.python.org/mailman/listinfo/python-list