Reviewing parsers implementations
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
https://github.com/nesaro/pydsl/blob/master/pydsl/Parser/RecursiveDescent.py
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
https://github.com/nesaro/pydsl/blob/master/pydsl/Parser/LR0.py
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
https://github.com/nesaro/pydsl/blob/master/pydsl/Parser/RecursiveDescent.py
I think a LLK Recursive descent parser is the next one to implement so I can make the basic calculator implementation work.