# 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.