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}