pkgsrc/devel/py-ply/DESCR
adam 97ccbd2be4 py-ply: updated to 3.11
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.
2021-01-19 21:05:22 +00:00

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.