97ccbd2be4
Version 3.11 ------------ Fixed some minor bugs related to re flags and token order. Added a set_lexpos() method to grammar symbols. Mostly minor bug fixes and small code cleanups. Version 3.10 ------------ Changed grammar signature computation to not involve hashing functions. Parts are just combined into a big string. Fixed Issue 101: Incorrect shift-reduce conflict resolution with precedence specifier. PLY was incorrectly resolving shift-reduce conflicts in certain cases. For example, in the example/calc/calc.py example, you could trigger it doing this: calc > -3 - 4 1 (correct answer should be -7) calc > Issue and suggested patch contributed by https://github.com/RomaVis Version 3.9 ----------- Exposed the parser state number as the parser.state attribute in productions and error functions. For example: def p_somerule(p): ''' rule : A B C ''' print('State:', p.parser.state) May address issue 65 (publish current state in error callback). Fixed Issue 88. Python3 compatibility with ply/cpp. Fixed Issue 93. Ply can crash if SyntaxError is raised inside a production. Not actually sure if the original implementation worked as documented at all. Yacc has been modified to follow the spec as outlined in the CHANGES noted for 11/27/07 below. Fixed Issue 97. Failure with code validation when the original source files aren't present. Validation step now ignores the missing file. Minor fixes to version numbers.
10 lines
513 B
Text
10 lines
513 B
Text
PLY is yet another implementation of lex and yacc for Python. Some notable
|
|
features include the fact that its implemented entirely in Python and it uses
|
|
LALR(1) parsing which is efficient and well suited for larger grammars.
|
|
|
|
PLY provides most of the standard lex/yacc features including support for empty
|
|
productions, precedence rules, error recovery, and support for ambiguous
|
|
grammars.
|
|
|
|
PLY is extremely easy to use and provides very extensive error checking. It is
|
|
compatible with both Python 2 and Python 3.
|