diff options
Diffstat (limited to 'src/utils.rs')
-rw-r--r-- | src/utils.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/utils.rs b/src/utils.rs index fc96615..dcf652d 100644 --- a/src/utils.rs +++ b/src/utils.rs | |||
@@ -3,7 +3,7 @@ use crate::{ | |||
3 | consts::FONT_PATH, | 3 | consts::FONT_PATH, |
4 | lisp::{ | 4 | lisp::{ |
5 | error::{EvalError, LispError, ParseError}, | 5 | error::{EvalError, LispError, ParseError}, |
6 | eval::eval, | 6 | eval::Evaluator, |
7 | expr::LispExpr, | 7 | expr::LispExpr, |
8 | lex::Lexer, | 8 | lex::Lexer, |
9 | parse::Parser, | 9 | parse::Parser, |
@@ -80,10 +80,14 @@ pub fn load_script<P: AsRef<Path>>(path: P, app: &mut AppState) -> Result<(), Li | |||
80 | .map_err(EvalError::ScriptLoadError)?; | 80 | .map_err(EvalError::ScriptLoadError)?; |
81 | 81 | ||
82 | let mut parser = Parser::new(Lexer::new(&buf, 0)); | 82 | let mut parser = Parser::new(Lexer::new(&buf, 0)); |
83 | let mut evaluator = Evaluator { | ||
84 | app, | ||
85 | context: Vec::new(), | ||
86 | }; | ||
83 | for expr in parser.parse_exprs().map_err(|err| { | 87 | for expr in parser.parse_exprs().map_err(|err| { |
84 | LispError::Stringified(err.display(&buf, path.as_ref().to_str().unwrap_or("<unknown>"))) | 88 | LispError::Stringified(err.display(&buf, path.as_ref().to_str().unwrap_or("<unknown>"))) |
85 | })? { | 89 | })? { |
86 | eval(&expr, app)?; | 90 | evaluator.eval(&expr)?; |
87 | } | 91 | } |
88 | return Ok(()); | 92 | return Ok(()); |
89 | } | 93 | } |