marwood 1.0.0

Scheme R7RS Virtual Machine
Documentation
#[allow(unused_macros)]
macro_rules! evals {
    ($($lhs:expr => $rhs:expr),+) => {{
        let mut vm = Vm::new();
         $(
            assert_eq!(vm.eval(&parse!($lhs)), Ok(match $rhs {
                "#<void>" => Cell::Void,
                "inf" => Cell::Number(marwood::number::Number::Float(f64::INFINITY)),
                "NaN" => Cell::Number(marwood::number::Number::Float(f64::NAN)),
                _ => parse!($rhs)
            }));
         )+
    }};
}

#[allow(unused_macros)]
macro_rules! prints {
    ($($lhs:expr => $rhs:expr),+) => {{
        let mut vm = Vm::new();
         $(
            assert_eq!(vm.eval(&parse!($lhs)).unwrap().to_string(), $rhs);
         )+
    }};
}

#[allow(unused_macros)]
macro_rules! fails {
    ($($lhs:expr => $rhs:expr),+) => {{
        let mut vm = Vm::new();
         $(
            assert_eq!(vm.eval(
                &parse!($lhs)
            ), Err($rhs));
         )+
    }};
}