jvm_assembler/formats/jasm/
mod.rs1use gaia_types::Result;
2use oak_core::{source::ToSource, Builder, ParseSession};
3use oak_jasm::{JasmBuilder, JasmLanguage, JasmRoot};
4use oak_pretty_print::{AsDocument, FormatConfig, Formatter};
5
6pub fn parse(source: &str) -> Result<JasmRoot> {
7 let language = JasmLanguage::default();
8 let builder = JasmBuilder::new(&language);
9 let mut session_cache = ParseSession::<JasmLanguage>::default();
10 let session = builder.build(source, &[], &mut session_cache);
11 if session.has_errors() {
12 return Err(gaia_types::GaiaError::custom_error("JASM parse error"));
14 }
15 Ok(session.result.unwrap())
16}
17
18pub fn to_source(root: &JasmRoot) -> String {
19 root.to_source_string()
20}
21
22pub fn to_doc(root: &JasmRoot) -> String {
23 let doc = root.as_document();
24 let config = FormatConfig::default();
25 doc.render(config)
26}