My favorites | Sign in
Project Home Downloads Wiki Issues Source
Repository:
Checkout   Browse   Changes   Clones  
Changes to /setup.py
431aadb3c826 vs. 7078985aebe3 Compare: vs.  Format:
Revision 7078985aebe3
Go to: 
Project members, sign in to write a code review
/setup.py   431aadb3c826 /setup.py   7078985aebe3
1 from setuptools import setup 1 from setuptools import setup
2 2
3 setup(name='LEPL', 3 setup(name='LEPL',
4 version='5.0.1', 4 version='5.0.2',
5 description='A Parser Library for Python 2.6+/3+: Recursive Descent; Full Backtracking', 5 description='A Parser Library for Python 2.6+/3+: Recursive Descent; Full Backtracking',
6 long_description=''' 6 long_description='''
7 LEPL is a recursive descent parser, written in Python, which has a a friendly, 7 LEPL is a recursive descent parser, written in Python, which has a a friendly,
8 easy-to-use syntax. The underlying implementation includes 8 easy-to-use syntax. The underlying implementation includes
9 several features that make it more powerful than might be expected. 9 several features that make it more powerful than might be expected.
10 10
11 For example, it is not limited by the Python stack, because it uses 11 For example, it is not limited by the Python stack, because it uses
12 trampolining and co-routines. Multiple parses can be found for ambiguous 12 trampolining and co-routines. Multiple parses can be found for ambiguous
13 grammars and it can also handle left-recursive grammars. 13 grammars and it can also handle left-recursive grammars.
14 14
15 The aim is a powerful, extensible parser that will also give solid, reliable 15 The aim is a powerful, extensible parser that will also give solid, reliable
16 results to first-time users. 16 results to first-time users.
17 17
18 `Release 5.0 <http://www.acooke.org/lepl/lepl5.0.html>`_ has simpler stream 18 `Release 5.0 <http://www.acooke.org/lepl/lepl5.0.html>`_ has simpler stream
19 (input) handling. Memoisation, line-aware lexing and memory use have also 19 (input) handling. Memoisation, line-aware lexing and memory use have also
20 been revised. These changes make future extension easier, fix several bugs, 20 been revised. These changes make future extension easier, fix several bugs,
21 and improve performance. 21 and improve performance.
22 22
23 Features 23 Features
24 -------- 24 --------
25 25
26 * **Parsers are Python code**, defined in Python itself. No separate 26 * **Parsers are Python code**, defined in Python itself. No separate
27 grammar is necessary. 27 grammar is necessary.
28 28
29 * **Friendly syntax** using Python's operators allows grammars 29 * **Friendly syntax** using Python's operators allows grammars
30 to be defined in a declarative style close to BNF. 30 to be defined in a declarative style close to BNF.
31 31
32 * Integrated, optional **lexer** simplifies handling whitespace. 32 * Integrated, optional **lexer** simplifies handling whitespace.
33 33
34 * Built-in **AST support** with support for iteration, traversal and 34 * Built-in **AST support** with support for iteration, traversal and
35 re--writing. 35 re--writing.
36 36
37 * Generic, pure-Python approach supports parsing a wide variety of data 37 * Generic, pure-Python approach supports parsing a wide variety of data
38 including **bytes** (Python 3+ only). 38 including **bytes** (Python 3+ only).
39 39
40 * **Well documented** and easy to extend. 40 * **Well documented** and easy to extend.
41 41
42 * **Unlimited recursion depth**. The underlying algorithm is 42 * **Unlimited recursion depth**. The underlying algorithm is
43 recursive descent, which can exhaust the stack for complex grammars 43 recursive descent, which can exhaust the stack for complex grammars
44 and large data sets. LEPL avoids this problem by using Python 44 and large data sets. LEPL avoids this problem by using Python
45 generators as coroutines (aka "trampolining"). 45 generators as coroutines (aka "trampolining").
46 46
47 * **Parser rewriting**. The parser can itself be manipulated by 47 * **Parser rewriting**. The parser can itself be manipulated by
48 Python code. This gives unlimited opportunities for future 48 Python code. This gives unlimited opportunities for future
49 expansion and optimisation. 49 expansion and optimisation.
50 50
51 * Support for ambiguous grammars (**complete backtracking**). A 51 * Support for ambiguous grammars (**complete backtracking**). A
52 parser can return more than one result (aka **"parse forests"**). 52 parser can return more than one result (aka **"parse forests"**).
53 53
54 * Parsers can be made more **efficient** with automatic memoisation ("packrat 54 * Parsers can be made more **efficient** with automatic memoisation ("packrat
55 parsing"). 55 parsing").
56 56
57 * Memoisation can detect and control **left-recursive grammars**. Together 57 * Memoisation can detect and control **left-recursive grammars**. Together
58 with LEPL's support for ambiguity this means that "any" grammar can be 58 with LEPL's support for ambiguity this means that "any" grammar can be
59 supported. 59 supported.
60 60
61 * Trace and resource management, including **"deepest match" diagnostics** 61 * Trace and resource management, including **"deepest match" diagnostics**
62 and the ability to limit backtracking. 62 and the ability to limit backtracking.
63 ''', 63 ''',
64 author='Andrew Cooke', 64 author='Andrew Cooke',
65 author_email='andrew@acooke.org', 65 author_email='andrew@acooke.org',
66 url='http://www.acooke.org/lepl/', 66 url='http://www.acooke.org/lepl/',
67 packages=['lepl', 'lepl._test', 'lepl._example', 67 packages=['lepl', 'lepl._test', 'lepl._example',
68 'lepl.apps', 'lepl.apps._test', 68 'lepl.apps', 'lepl.apps._test',
69 'lepl.bin', 'lepl.bin._test', 'lepl.bin._example', 69 'lepl.bin', 'lepl.bin._test', 'lepl.bin._example',
70 'lepl.contrib', 70 'lepl.contrib',
71 'lepl.core', 'lepl.core._test', 71 'lepl.core', 'lepl.core._test',
72 'lepl.lexer', 'lepl.lexer._test', 'lepl.lexer._example', 72 'lepl.lexer', 'lepl.lexer._test', 'lepl.lexer._example',
73 'lepl.lexer.lines', 'lepl.lexer.lines._test', 'lepl.lexer.lines._example', 73 'lepl.lexer.lines', 'lepl.lexer.lines._test', 'lepl.lexer.lines._example',
74 'lepl.matchers', 'lepl.matchers._test', 74 'lepl.matchers', 'lepl.matchers._test',
75 'lepl.regexp', 'lepl.regexp._test', 75 'lepl.regexp', 'lepl.regexp._test',
76 'lepl.stream', 'lepl.stream._test', 76 'lepl.stream', 'lepl.stream._test',
77 'lepl.support', 'lepl.support._test', 77 'lepl.support', 'lepl.support._test',
78 ], 78 ],
79 package_dir = {'':'src'}, 79 package_dir = {'':'src'},
80 keywords = "parser", 80 keywords = "parser",
81 classifiers=['Development Status :: 5 - Production/Stable', 81 classifiers=['Development Status :: 5 - Production/Stable',
82 'Intended Audience :: Developers', 82 'Intended Audience :: Developers',
83 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', 83 'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
84 'License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)', 84 'License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)',
85 'Natural Language :: English', 85 'Natural Language :: English',
86 'Operating System :: OS Independent', 86 'Operating System :: OS Independent',
87 'Programming Language :: Python :: 3', 87 'Programming Language :: Python :: 3',
88 'Programming Language :: Python :: 3.0', 88 'Programming Language :: Python :: 3.0',
89 'Programming Language :: Python :: 3.1', 89 'Programming Language :: Python :: 3.1',
90 'Programming Language :: Python :: 3.2', 90 'Programming Language :: Python :: 3.2',
91 'Programming Language :: Python :: 2.6', 91 'Programming Language :: Python :: 2.6',
92 'Programming Language :: Python :: 2.7', 92 'Programming Language :: Python :: 2.7',
93 'Topic :: Software Development', 93 'Topic :: Software Development',
94 'Topic :: Software Development :: Libraries', 94 'Topic :: Software Development :: Libraries',
95 'Topic :: Software Development :: Libraries :: Python Modules', 95 'Topic :: Software Development :: Libraries :: Python Modules',
96 'Topic :: Text Processing', 96 'Topic :: Text Processing',
97 'Topic :: Text Processing :: Filters', 97 'Topic :: Text Processing :: Filters',
98 'Topic :: Text Processing :: General', 98 'Topic :: Text Processing :: General',
99 'Topic :: Utilities' 99 'Topic :: Utilities'
100 ] 100 ]
101 ) 101 )
Powered by Google Project Hosting