gaybuild/src/main.rs
fef ec8c8916b7
ast: allow definitions in loop head
This is a rather bad hack, but it makes parsing a
lot easier, so i'll allow it for now.
2022-08-07 17:49:58 +02:00

36 lines
1 KiB
Rust

mod ast;
mod error;
mod lex;
mod rt;
use std::time::Instant;
use ast::parse;
use rt::exec;
fn main() {
let start_time = Instant::now();
let result = parse(String::from("test.gaybuild")).unwrap();
let duration = start_time.elapsed();
match result {
Ok(tree) => {
println!("=== begin tree ===");
tree.walk(|n, d| println!("{}{}", " ".repeat(d as usize), n));
println!("=== end tree ===");
println!("parsing took {:?}\n", duration);
println!("=== begin eval ===");
let start_time = Instant::now();
let result = exec(&tree);
let duration = start_time.elapsed();
match result {
Ok(val) => {
println!("=== end eval ===");
println!("evaluation took {:?}", duration);
println!("evaluation returned {}", val)
}
Err(e) => println!("{:?}", e),
}
}
Err(e) => println!("{:?}", e),
}
}