Squatted crate for a [Modern Parser Generator](https://matklad.github.io/2018/06/06/modern-parser-generator.html).
Contact @CAD97 if you want to collaborate on development of this tool.
Solo development will happen when they find time and motivation concurrently.
Until then, check out [tree-sitter](https://github.com/tree-sitter/tree-sitter).
Namely, inspired by matklad's post, mpg will provide
## UX
Tooling designed IDE-first.
- Interactive development. Provide example inputs while editing the grammar and immediately see the resulting syntax trees.
- Inline snapshot tests. Example productions listed next to the defining rules are automatically tested with the resulting syntax trees tracked in version control.
- Full LSP support.
## API
- Designed to be used on top of a separate lexer.
- Supports pull-lexing with principled lexical feedback.
- Prefers pre-lexing with replayable incremental reparsing.
- Produces a homogeneous literal syntax tree.
- Provides an optional typed view of the literal syntax tree.
- Embeddable anywhere via a C API.
## Parsing Techniques
- Specify operator precedence and associativity directly.
- Strong error tolerance/recovery via follow sets and explicit recovery points.
- Choose your tradeoffs:
- Guaranteed determinism at a cost of generality.
- Full generality at the cost of ambiguity.
Quality of incorrect syntax error messages is a non-priority left to the user.