clr_assembler/formats/msil/
mod.rs1use gaia_types::Result;
2use oak_core::{source::ToSource, Builder, ParseSession};
3pub use oak_msil::{ast::*, builder::MsilBuilder, language::MsilLanguage, parser::MsilParser};
4
5pub mod converter;
6
7#[derive(Debug, Clone, Copy, Default)]
9pub struct MsilReadConfig {
10 pub include_debug_info: bool,
12}
13
14pub fn parse(source: &str) -> Result<MsilRoot> {
15 let language = MsilLanguage::default();
16 let builder = MsilBuilder::new(&language);
17 let mut session_cache = ParseSession::<MsilLanguage>::default();
18 let session = builder.build(source, &[], &mut session_cache);
19 if session.has_errors() {
20 return Err(gaia_types::GaiaError::custom_error("MSIL parse error"));
21 }
22 Ok(session.result.unwrap())
23}
24
25pub fn to_source(root: &MsilRoot) -> String {
26 root.to_source_string()
27}
28
29pub fn to_doc(root: &MsilRoot) -> String {
30 use oak_pretty_print::{AsDocument, FormatConfig};
31 let doc = root.as_document();
32 let config = FormatConfig::default();
33 doc.render(config)
34}