use std::sync::Arc; use crate::module::CrsnExtension; use crate::runtime::program::Program; pub mod data; pub mod error; pub mod instr; pub mod parse; pub mod patches; /// Parse a program from string and assemble a low level instruction sequence from it. pub fn assemble(source: &str, parsers: Arc>>) -> Result, error::Error> { let ops = parse::parse(source, &parsers)?; trace!("--- Compiled program ---"); for (n, op) in ops.iter().enumerate() { trace!("{:04} : {:?}", n, op); } trace!("------------------------"); Ok(Program::new(ops, parsers)) }