Source

ply / ANNOUNCE

The default branch has multiple heads

Full commit
October 2, 2006

                  Announcing :  PLY-2.1 (Python Lex-Yacc)

                        http://www.dabeaz.com/ply

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.1 builds
upon the reimplementation of LALR(1) parsing that appeared in PLY-2.0 and
adds a number of significant new features.  These include:

- Elimination of internal limitations due to the use of Python's re
  module.

- Better support for inherited attributes and embedded parsing 
  actions.

- Character literals (e.g., '+', '-') can now be included in
  grammar specifications.

- Improved packaging.  PLY is now a proper Python package.

- Improved support for line number and column tracking.

- Added diagnostics.

- New examples including a program to convert tradition yacc/bison
  specifications to PLY.

- A variety of minor enhancements and bug fixes.

If you are new to PLY, here are a few 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 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:

                   http://www.dabeaz.com/ply

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

Cheers,

David Beazley (http://www.dabeaz.com)