The default branch has multiple heads

September 8, 2006

                  Announcing :  PLY-2.0 (Python Lex-Yacc)


I'm pleased to announce a significant new update to PLY---a 100% Python
implementation of the common parsing tools lex and yacc.  PLY-2.0 features
a completely new implementation of LALR(1) parsing that provides a
significant speedup when generating the underlying parsing tables. This
new implementation also (hopefully) fixes all outstanding bugs in LALR(1)
parsing that were reported for previous versions of PLY-1.x.  

Here are a few PLY highlights:

  -  PLY is closely modeled after traditional lex/yacc.  If you know how 
     to use these or similar tools in other languages, you will find
     PLY to be comparable.

  -  PLY provides very extensive error reporting and diagnostic
     information to assist in parser construction.  The original
     implementation was developed for instructional purposes.  As
     a result, the system tries to identify the most common types
     of errors made by novice users.

  -  PLY provides full support for empty productions, error recovery,
     precedence rules, and moderately ambiguous grammars.

  -  Parsing is based on LR-parsing which is fast, memory efficient,
     better suited to large grammars, and which has a number of nice
     properties when dealing with syntax errors and other parsing 
     problems. Currently, PLY can build its parsing tables using 
     either SLR or LALR(1) algorithms. 

  -  PLY can be used to build parsers for large programming languages.
     Although it is not ultra-fast due to its Python implementation,
     PLY can be used to parse grammars consisting of several hundred
     rules (as might be found for a language like C).  The lexer and LR
     parser are also reasonably efficient when parsing normal
     sized programs.

More information about PLY can be obtained on the PLY webpage at:


PLY is freely available and is licensed under the terms of the Lesser
GNU Public License (LGPL).


David Beazley (
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.