kind_parser/
lib.rs

1//! Crate to parse the kind2 grammar.
2mod diagnostic;
3mod expr;
4mod lexer;
5mod macros;
6mod pat;
7mod state;
8mod top_level;
9
10use std::sync::mpsc::Sender;
11
12use kind_report::data::Diagnostic;
13use kind_span::SyntaxCtxIndex;
14use kind_tree::concrete::Module;
15use lexer::state::*;
16use state::Parser;
17
18pub fn parse_book(errs: Sender<Box<dyn Diagnostic>>, ctx_id: usize, input: &str) -> (Module, bool) {
19    let peekable = input.chars().peekable();
20    let lexer = Lexer::new(input, peekable, SyntaxCtxIndex::new(ctx_id));
21    let mut parser = Parser::new(lexer, errs);
22    (parser.parse_module(), parser.failed)
23}