PLY is a Python-only implementation of the popular compiler construction
tools lex and yacc. The implementation borrows ideas from a number of
previous efforts; most notably John Aycock's SPARK toolkit. However, the
overall flavor of the implementation is more closely modeled after the C
version of lex and yacc. The other significant feature of PLY is that it
provides extensive input validation and error reporting--much more so than
other Python parsing tools.

Homepage:
http://www.dabeaz.com/ply/
