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