symboscript-interpreter 0.17.1

SymboScript interpreter
#[macro_export]
macro_rules! expect_args {
    ($amount: expr, $interpreter:ident, $call_expr:ident, $args:ident ) => {
        if $args.len() != $amount {
            $interpreter.report(
                &format!("Wrong number of arguments (expected $amount)"),
                $call_expr.node.start,
                $call_expr.node.end,
            );
        }
    };
}

#[macro_export]
macro_rules! mut_values_hm {
    ($amount:expr, $interpreter:ident, $call_expr:ident, $args:ident) => {{
        expect_args!($amount, $interpreter, $call_expr, $args);

        let scope_ref = $args[0].clone();

        let scope = match_scope(&scope_ref, $interpreter, $call_expr);

        &mut $interpreter.vault.get_mut(&scope).unwrap().values
    }};
}