use pnc_engine::parse;
use std::io;
use std::process::ExitCode;
pub fn eval_tokens(tokens: Vec<String>) -> ExitCode {
let mut stack = Vec::new();
let line = tokens.join(" ");
if let Err(e) = parse::eval_line(&mut stack, &line) {
eprintln!("{}", e);
return ExitCode::from(1);
}
if let Some(v) = stack.last() {
println!("{}", v);
}
ExitCode::SUCCESS
}
pub fn eval_stdin() -> ExitCode {
let mut line = String::new();
if io::stdin().read_line(&mut line).is_err() {
eprintln!("failed to read stdin");
return ExitCode::from(1);
}
let mut stack = Vec::new();
if let Err(e) = parse::eval_line(&mut stack, &line) {
eprintln!("{}", e);
return ExitCode::from(1);
}
if let Some(v) = stack.last() {
println!("{}", v);
}
ExitCode::SUCCESS
}