This was my attempt at writing a recursive-decent parser by hand, for the python source code.
It worked fairly well (for a subset of code) but it was large and clunky.
I have since decided to try and avoid hand-written parsers ;)
If you're into parser generators, take a look at:
- parol - LL(k)
- pest - PEG
- tree-sitter - LR(1)
- lalrpop LR(1) or LALR(1)
- Antlr - Amazing magic but Rust bindings are experimental :(
If you're into parser combinators, take a look at:
I did some work on ASDLR ASTs here. That has since moved to a seperate project.