Comment by vjerancrnjak
12 hours ago
It’s funny how there is continuous reinvention of parsing approaches.
Why isn’t there already some parser generator with vector instructions, pgo, low stack usage. Just endless rewrites of recursive descent with caching optimizations sprinkled when needed.
Hardware also changes across time, so while something that was initially fast, people with new hardware tries it, finds it now so fast for them, then create their own "fast X". Fast forward 10 more years, someone with new hardware finds that, "huh why isn't it using extension Y" and now we have three libraries all called "Fast X".
Because you have to learn how to use any given parser generator, naive code is easy to write, and there are tons of applications for parsing that aren't really performance critical.
I'd say because parsing is very specific kind of work heavily dependent on the grammar you're dealing with
There are good parser generators, but potentially not as Rust libraries.
I decided to look; just found these:
chumsky (parser combinator): https://github.com/zesterer/chumsky
LALRPOP (LR(1)): https://github.com/lalrpop/lalrpop
grmtools (YACC) https://github.com/softdevteam/grmtools/ re: Other parsers: https://softdevteam.github.io/grmtools/master/book/othertool...
antlr4rust: https://github.com/rrevenantt/antlr4rust