Published Mar 19, 2007
The parser generator I implemented has been quite stable for over a month now. It has the potential to be of use to others, so I am making it publicly available. Parsing.py is a stand-alone pure Python module. This makes it easy to maintain and use, but as a result it is substantially slower than C-based parser generators and parsers. That is the only negative thing I can think of to say though. In my obviously biased opinion, the Parsing module is extremely cool. If you need to implement a parser in Python, you should give it a serious look.
Here is a quick summary of what the Parsing module is:
The module is heavily documented via docstrings. The easiest way to view the
documentation in a reasonable format is via the interactive python command line
(import Parsing; help(Parsing)
). It is worth mentioning here that you
need Python 2.5. As far as I know, the (... if ... else ...)
expression
syntax is the only reason for this dependency, so if you want to use Parsing.py
with an older Python interpreter, porting it should not cause you much trouble.
Okay, without further delay, here it is: Parsing.py
May I see a sample please?
Yea, I agree. A small code sample would be very nice. It is easier to get started with a mininmal example.
Okay, I’ll write a new entry later today with a simple example.
Hi. I am final year ug student implementing a LR(1) parser generator in javascript. Your site has helped me a lot. i would like to ask a favor, if thats possible. Can you give me pointers on how to test my parser generator? I’m currently implementing the pager algorithm and not really sure how to test it. Any help would be much appreciated. Thanks
I suggest finding as many small test cases as possible, from compiler books, newsgroups, etc. Once you’re confident all of those work correctly, find a non-trivial parser (for something like the C language) and verify that the generated parser can handle a wide variety of valid inputs.