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}