Excluding external dependencies, PyDSL implements 4 parsers:

1.Backtracing Recusive Descent Parser

It attempts every possible recursion and returns every valid parse tree. It supports the Null symbol, generates errors reports for the validator. It doesn’t support left recursion


2.Weighted Backtracing Recusive Descent Parser

A small optimization on top of the Backtracing Recusive Descent Parser. It attempts to consume symbols closer to the leaf nodes first. https://github.com/nesaro/pydsl/blob/master/pydsl/Parser/Weighted.py

3. LR0 Parser

First attempt to implement a bottom up parser supporting grammar/alphabet recursion. It can deal with left recursion, but it has no support for error generation or Null symbols


4. LL1 Recursive Descent Parser

A simpler implementation of a Recursive Descent Parser based on the Language implementation patterns. It doesn’t support null symbol, left recursion or error generation


I think a LLK Recursive descent parser is the next one to implement so I can make the basic calculator implementation work.