eww/examples/errors.rs

25 lines
808 B
Rust

use std::collections::HashMap;
fn main() {
let mut files = codespan_reporting::files::SimpleFiles::new();
let input = "12 + foo * 2 < 2 ? bar == true : false";
let _ = files.add("foo.eww", input);
let ast = simplexpr::parser::parse_string(input);
let mut vars = HashMap::new();
vars.insert("foo".to_string(), "2".into());
match ast.and_then(|x| x.eval(&vars).map_err(|e| e.into())) {
Ok(ast) => {
println!("{:?}", ast);
}
Err(err) => {
let diag = err.pretty_diagnostic();
use codespan_reporting::term;
let mut writer = term::termcolor::StandardStream::stderr(term::termcolor::ColorChoice::Always);
term::emit(&mut writer, &term::Config::default(), &files, &diag).unwrap();
}
}
}