git.delta.rocks / jrsonnet / refs/commits / a7bbbb48a2fd

difftreelog

source

crates/jrsonnet-rowan-parser/src/lib.rs862 Bsourcehistory
1#![deny(unused_must_use)]23use event::Sink;4use generated::nodes::{SourceFile, Trivia};5use lex::lex;6use parser::{LocatedSyntaxError, Parser};7pub use rowan;89mod ast;10mod event;11mod generated;12mod language;13mod lex;14mod marker;15mod parser;16mod precedence;17mod string_block;18mod tests;19mod token_set;2021pub use ast::{AstChildren, AstNode, AstToken};22pub use generated::{nodes, syntax_kinds::SyntaxKind};23pub use language::*;24pub use token_set::SyntaxKindSet;2526pub fn parse(input: &str) -> (SourceFile, Vec<LocatedSyntaxError>) {27	let lexemes = lex(input);28	let kinds = lexemes29		.iter()30		.map(|l| l.kind)31		.filter(|k| !Trivia::can_cast(*k))32		.collect();33	let parser = Parser::new(kinds);34	let events = parser.parse();35	let sink = Sink::new(events, &lexemes);3637	let parse = sink.finish();38	(39		SourceFile {40			syntax: parse.syntax(),41		},42		parse.errors,43	)44}