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