[EMAIL PROTECTED] wrote: > I'm a compiler newbie and curious if Python grammar is able to > be parsed by a recursive descent parser or if it requires > a more powerful algorithm.
Python is relatively simple to parse using a recursive descent parser. If you're rolling your own as a learning exercise, the grammar for python is included in one of the top level directories of the source distribution for python. The one area that is slightly different from usual is the emitting of INDENT and DEDENT tokens by the lexer due to handling of whitespace. But that's not really that complex either. A couple of years ago I decided to see what it would be like to try to parse a python-like language with no keywords and to see if you could do it test first (for fun :). If you do this, you discover the grammar is very short but you need terminator tokens to close if..elif...elif...else... like statements (eg if..elif...elif...else...end, try...except...except...except...endtry). I put that code up here: http://cerenity.org/SWP/ if you're curious. That and the python grammar file should probably help you roll your own parser. (It emits an AST that assumes everything is a function. I was pondering giving it a lisp backend or transforming to lisp but never got a round tuit) If however you're doing this because you're not aware of the compiler module, it's worth knowing that compiler.parse is a pretty useful function :-) Michael. -- http://mail.python.org/mailman/listinfo/python-list