mod constants;
mod lexer;
mod parser;
mod evaluator;
mod utils;
use utils::args::get_args;
use std::fs;
fn main() {
let args = get_args();
if args.len() < 2 {
eprintln!("Usage: {} <filename>", args[0]);
return;
}
let filename = &args[1];
let contents = fs::read_to_string(filename).expect("Something went wrong reading the file");
let tokens = lexer::tokenizer::tokenize(&contents);
for token in &tokens {
println!("{:?}", token);
}
let mut parser = parser::parser::Parser::new(&tokens);
let ast = parser.parse().unwrap();
println!("{:#?}", ast);
let mut evaluator = evaluator::evaluator::Evaluator::new(&tokens);
evaluator.evaluate().unwrap();
}