1#![deny(unused_must_use)]23mod ast;4mod binary;5mod event;6mod generated;7mod language;8mod lex;9mod marker;10mod parser;11mod string_block;12mod tests;13mod token_set;14mod unary;1516pub use ast::{AstChildren, AstNode, AstToken};17use event::Sink;18use generated::nodes::SourceFile;19pub use generated::{nodes, syntax_kinds::SyntaxKind};20pub use language::{21 JsonnetLanguage, PreorderWithTokens, SyntaxElement, SyntaxElementChildren, SyntaxNode,22 SyntaxNodeChildren, SyntaxToken,23};24use lex::lex;25use parser::{Parser, SyntaxError};26pub fn parse(input: &str) -> (SourceFile, Vec<SyntaxError>) {27 let lexemes = lex(input);28 let parser = Parser::new(&lexemes);29 let events = parser.parse();30 let sink = Sink::new(events, &lexemes);3132 let parse = sink.finish();33 (34 SourceFile {35 syntax: parse.syntax(),36 },37 parse.errors,38 )39}