1#![deny(unused_must_use)]23use event::Sink;4use generated::nodes::{SourceFile, Trivia};5use parser::{LocatedSyntaxError, Parser};6pub use rowan;78mod ast;9mod event;10mod generated;11mod language;12mod lex;13mod marker;14mod parser;15mod precedence;16mod tests;17mod token_set;1819pub use ast::{AstChildren, AstNode, AstToken};20pub use generated::{nodes, syntax_kinds::SyntaxKind};21pub use language::*;22pub use token_set::SyntaxKindSet;2324pub fn parse(input: &str) -> (SourceFile, Vec<LocatedSyntaxError>) {25 let lexemes = lex::lex(input);26 let kinds = lexemes27 .iter()28 .map(|l| l.kind)29 .filter(|k| !Trivia::can_cast(*k))30 .collect();31 let parser = Parser::new(kinds);32 let events = parser.parse();33 let sink = Sink::new(events, &lexemes);3435 let parse = sink.finish();36 (37 SourceFile {38 syntax: parse.syntax(),39 },40 parse.errors,41 )42}