1#![doc = include_str!("readme.md")]
2#![feature(new_range_api)]
3#![warn(missing_docs)]
4#![doc(html_logo_url = "https://raw.githubusercontent.com/ygg-lang/oaks/refs/heads/dev/documents/logo.svg")]
5#![doc(html_favicon_url = "https://raw.githubusercontent.com/ygg-lang/oaks/refs/heads/dev/documents/logo.svg")]
6
7use oak_core::builder::Builder;
8
9pub mod ast;
11pub mod builder;
13pub mod language;
15pub mod lexer;
17pub mod parser;
19
20pub use ast::VbNetRoot;
21pub use builder::VbNetBuilder;
22pub use language::VbNetLanguage;
23pub use lexer::{VbNetLexer, token_type::VbNetTokenType};
24pub use parser::VbNetParser;
25
26pub fn parse(source: &str) -> Result<VbNetRoot, oak_core::OakError> {
35 let language = VbNetLanguage::new();
36 let builder = VbNetBuilder::new(&language);
37 let source_text = oak_core::source::SourceText::new(source);
38 let mut session = oak_core::parser::ParseSession::<VbNetLanguage>::default();
39 let output = builder.build(&source_text, &[], &mut session);
40 output.result
41}
42
43pub fn parse_with_cache(source: &str, cache: &mut oak_core::parser::CachingParseSession<VbNetLanguage, oak_core::parser::ParseSession<VbNetLanguage>>) -> Result<VbNetRoot, oak_core::OakError> {
52 use oak_core::ParseCache;
53
54 let language = VbNetLanguage::new();
55 let builder = VbNetBuilder::new(&language);
56 let source_text = oak_core::source::SourceText::new(source);
57
58 let output = builder.build(&source_text, &[], cache);
60
61 output.result
63}