Maitreya
Maitreya is a generalized LR parser generator written in javascript.
When you want to design and implement a new programming language. You want to prototype the grammar quickly. You may change the grammar over over again. I have used PEGjs. It still far away my goal. So, I wrote Maitreya. With the power of generalized LR parser, free your mind away from "left recursive", “shift/reduce reduce/reduce conflict”, "ambiguity", "look ahead", "separated list" ...
Features
- Accept GLR grammars, not limited to LR(k) grammars.
- Support incremental (not yet) / streaming parsing.
- Can do both scanner less parsing and token based parsing.
- Can build grammar on the fly by using parser combinators.
- Support both interpretation and code genearation.
Example
;; let grammar = ; let parser = grammar;parser;console;
Still interested? Look at the API Reference
Todos
- Interpret mode.
- Code generation frontend.
- Code generation backends.
- Complete the test cases.
- API documentation and website.
- Performance benchmark and optimisation.