nexus_api/lib.rs
1use clutils::errors::FileHandlerError;
2use nexus_lib::{lexer::Lexer, parser::Parser, evaluator::Evaluator};
3
4pub fn execute_program(path: &str) -> Result<(), FileHandlerError> {
5 let mut lexer = Lexer::new(&path.into())?;
6 let mut parser = Parser::new(&mut lexer);
7 let mut evaluator = Evaluator::new();
8 loop {
9 let stmt = match parser.parse_stmt() {
10 Ok(stmt) => stmt,
11 Err(_) => break,
12 };
13 evaluator.eval_stmt(stmt);
14 parser.next_token();
15 }
16 Ok(())
17}