LEPL is a recursive descent parser library written in Python. It is based on parser combinator libraries popular in functional programming, but also exploits Python language features. Operators provide a friendly syntax, and the consistent use of generators supports full backtracking and resource management. Backtracking implies that a wide variety of grammars are supported; appropriate memoisation ensures that even left-recursive grammars terminate.
| Tags | Utilities Text Processing General Filters Software Development Libraries Python Modules Parser Recursive Descent Co-Routines regular expressions python2 python3 |
|---|---|
| Licenses | LGPL MPL1.1 |
| Operating Systems | OS Independent |
| Implementation | Python |
Recent releases


Release Notes: This release contains a significant rewrite to simplify the internal handling of the input stream. This improves reliability, efficiency, and will allow further extension in the future. As a consequence, the internal API for streams has changed. The handling of memoization and offside (whitespace significant) parsing has also been modified to address issues found while testing the new streams. Finally, it is now possible to use LEPL to parse documents larger than the available memory.


Release Notes: This release adds a minor bugfix for SOL and EOL matchers, used to explicitly match the start- and end-of-line markers when line-aware parsing is enabled.


Release Notes: Line-aware parsing (without the offside rule) has been simplified in response to user feedback. A related bug that affected automatic token generation has been fixed.


Release Notes: Fixes were made to LineAwareAlphabet, which improve the use of matchers within tokens when using offside parsing. A new example of offside parsing has been added to the documentation.


Release Notes: This release fixes an error in which the rewriter lost transformations (typically "Drop") when converting a matcher to a regular expression.