mod assembler;
mod debugger;
mod operation;
mod parser;
mod runtime;
mod runtime_state;

use std::fmt::Display;

pub use assembler::assemble;
pub use debugger::debug;
pub use runtime::run;
pub use runtime_state::ExecutionResult;

#[derive(Debug)]
pub struct Error {
    pub message: String,
    pub line: usize,
}

impl Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}: {}", (self.line + 1), self.message)
    }
}