#![forbid(unsafe_code)]
use s1vm::*;
fn main() -> Result<(), Error> {
let mut args = std::env::args();
args.next(); let file = args.next().expect("missing file name");
let func = args.next().expect("missing function name");
let params: Vec<Value> = args.map(|x| {
match x.parse::<i64>() {
Ok(v) => Value::I64(v),
Err(e) => {
eprintln!("failed to parse '{}': {}", x, e);
Value::I64(0)
},
}
}).collect();
let mut vm = VM::new();
vm.load_file("main", &file)?;
let ret = vm.call("main", &func, ¶ms)?;
if let Some(ret) = ret {
println!("{}", ret);
} else {
println!("ret = <no return value>");
}
Ok(())
}