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
The 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 the funcparserlib library is parsing little languages or external DSLs (domain specific languages).
- Fixed bug in results of skip + skip parsers
- Added FAQ question about infinite loops in parsers
- Debug rule tracing can be enabled again