1#![doc = include_str!("readme.md")]
2#![feature(new_range_api)]
3#![warn(missing_docs)]
4pub mod ast;
7pub mod builder;
8pub mod language;
9pub mod lexer;
10#[cfg(any(feature = "lsp", feature = "oak-highlight", feature = "oak-pretty-print"))]
11pub mod lsp;
12pub mod parser;
13
14pub use crate::{ast::WitRoot, builder::WitBuilder, language::WitLanguage, lexer::WitLexer, parser::WitParser};
15pub use lexer::token_type::WitTokenType;
16pub use parser::element_type::WitElementType;
17
18pub fn parse(wit: &str) -> Result<crate::ast::WitRoot, String> {
20 use oak_core::{Builder, parser::session::ParseSession, source::SourceText};
21 let language = WitLanguage::default();
22 let builder = WitBuilder::new(&language);
23 let source = SourceText::new(wit.to_string());
24 let mut cache = ParseSession::default();
25 let result = builder.build(&source, &[], &mut cache);
26 result.result.map_err(|e| format!("{:?}", e))
27}