Recursive descent parser library based on functional combinators
Project description
Description
Parser combinators are just higher-order functions that take parsers as their arguments and return them as result values. Parser combinators are:
First-class values
Extremely composable
Tend to make the code quite compact
Resemble the readable notation of xBNF grammars
Parsers made with funcparserlib are pure-Python LL(*) parsers. It means that it’s very easy to write them without thinking about look-aheads and all that hardcore parsing stuff. But the recursive descent parsing is a rather slow method compared to LL(k) or LR(k) algorithms.
So the primary domain for funcparserlib is parsing little languages or external DSLs (domain specific languages).
The library itself is very small. Its source code is only 0.5 KLOC, with lots of comments included. It features the longest parsed prefix error reporting, as well as a tiny lexer generator for token position tracking.
Documentation
The funcparserlib Tutorial is a good starting point
Nested Brackets Mini-HOWTO is a shorter intro
Parsing Stages Illustrated (with pictures!) for a general view
Examples in ./examples directory
GraphViz DOT parser
JSON parser
The source code is quite straightforward and well-documented
What’s New in 0.3.3
A bugfix release, added more docs.
Fixed bug in results of skip + skip parsers
Added FAQ question about infinite loops in parsers
Debug rule tracing can be enabled again
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file funcparserlib-0.3.3.tar.gz
.
File metadata
- Download URL: funcparserlib-0.3.3.tar.gz
- Upload date:
- Size: 32.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa08be77e63a6f2ad54f89d3036abdb13799c5774aff9f673fd2326fb2f55ded |
|
MD5 | e15c33ec18d683682e04fb86520a62a6 |
|
BLAKE2b-256 | 2706de055f180d749a76744f46c95e213678b13f0d739d976b2338f0c6f53daf |