ext/ply/ply/lex.py: ext/ply/ply/yacc.py: ext/ply/CHANGES: ext/ply/README: ext/ply/TODO: ext/ply/doc/ply.html: ext/ply/example/ansic/clex.py: ext/ply/example/ansic/cparse.py: ext/ply/example/calc/calc.py: ext/ply/example/hedit/hedit.py: ext/ply/example/optcalc/calc.py: ext/ply/test/README: ext/ply/test/calclex.py: ext/ply/test/lex_doc1.exp: ext/ply/test/lex_doc1.py: ext/ply/test/lex_dup1.exp: ext/ply/test/lex_dup1.py: ext/ply/test/lex_dup2.exp: ext/ply/test/lex_dup2.py: ext/ply/test/lex_dup3.exp: ext/ply/test/lex_dup3.py: ext/ply/test/lex_empty.py: ext/ply/test/lex_error1.py: ext/ply/test/lex_error2.py: ext/ply/test/lex_error3.exp: ext/ply/test/lex_error3.py: ext/ply/test/lex_error4.exp: ext/ply/test/lex_error4.py: ext/ply/test/lex_hedit.exp: ext/ply/test/lex_hedit.py: ext/ply/test/lex_ignore.exp: ext/ply/test/lex_ignore.py: ext/ply/test/lex_re1.exp: ext/ply/test/lex_re1.py: ext/ply/test/lex_rule1.py: ext/ply/test/lex_token1.py: ext/ply/test/lex_token2.py: ext/ply/test/lex_token3.py: ext/ply/test/lex_token4.py: ext/ply/test/lex_token5.exp: ext/ply/test/lex_token5.py: ext/ply/test/yacc_badargs.exp: ext/ply/test/yacc_badargs.py: ext/ply/test/yacc_badprec.exp: ext/ply/test/yacc_badprec.py: ext/ply/test/yacc_badprec2.exp: ext/ply/test/yacc_badprec2.py: ext/ply/test/yacc_badrule.exp: ext/ply/test/yacc_badrule.py: ext/ply/test/yacc_badtok.exp: ext/ply/test/yacc_badtok.py: ext/ply/test/yacc_dup.exp: ext/ply/test/yacc_dup.py: ext/ply/test/yacc_error1.exp: ext/ply/test/yacc_error1.py: ext/ply/test/yacc_error2.exp: ext/ply/test/yacc_error2.py: ext/ply/test/yacc_error3.exp: ext/ply/test/yacc_error3.py: ext/ply/test/yacc_inf.exp: ext/ply/test/yacc_inf.py: ext/ply/test/yacc_missing1.exp: ext/ply/test/yacc_missing1.py: ext/ply/test/yacc_nodoc.exp: ext/ply/test/yacc_nodoc.py: ext/ply/test/yacc_noerror.exp: ext/ply/test/yacc_noerror.py: ext/ply/test/yacc_nop.exp: ext/ply/test/yacc_nop.py: ext/ply/test/yacc_notfunc.exp: ext/ply/test/yacc_notfunc.py: ext/ply/test/yacc_notok.exp: ext/ply/test/yacc_notok.py: ext/ply/test/yacc_rr.exp: ext/ply/test/yacc_rr.py: ext/ply/test/yacc_simple.exp: ext/ply/test/yacc_simple.py: ext/ply/test/yacc_sr.exp: ext/ply/test/yacc_sr.py: ext/ply/test/yacc_term1.exp: ext/ply/test/yacc_term1.py: ext/ply/test/yacc_unused.exp: ext/ply/test/yacc_unused.py: ext/ply/test/yacc_uprec.exp: ext/ply/test/yacc_uprec.py: Import patch ply.diff src/arch/isa_parser.py: everything is now within the ply package --HG-- rename : ext/ply/lex.py => ext/ply/ply/lex.py rename : ext/ply/yacc.py => ext/ply/ply/yacc.py extra : convert_revision : fca8deabd5c095bdeabd52a1f236ae1404ef106e
48 lines
No EOL
1.8 KiB
Text
48 lines
No EOL
1.8 KiB
Text
February 19, 2007
|
|
|
|
Announcing : PLY-2.3 (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.3 is
|
|
a minor bug fix release, but also features improved performance.
|
|
|
|
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) |