maat_parser 0.11.2

Combinator-based parser for the Maat programming language
Documentation

Combinator-based parser powered by [winnow], with Pratt-style operator precedence for expressions.

Tokens produced by the [MaatLexer] are collected into a flat slice, then parsed via [winnow] stream operations. Statement dispatch uses a two-token lookahead match; expression parsing uses a manual Pratt loop that delegates to winnow for individual token consumption.

Example

use maat_lexer::MaatLexer;
use maat_parser::MaatParser;

let input = "let x = 5 + 10;";
let lexer = MaatLexer::new(input);
let mut parser = MaatParser::new(lexer);
let program = parser.parse();

assert_eq!(parser.errors().len(), 0);
assert_eq!(program.statements.len(), 1);