diff --git a/ginkgo/src/interpreter.rs b/ginkgo/src/interpreter.rs index b20ba36ba8..10c7b3bf9e 100644 --- a/ginkgo/src/interpreter.rs +++ b/ginkgo/src/interpreter.rs @@ -443,6 +443,7 @@ impl<'a> Interpreter<'a> { } } +#[derive(Debug)] pub struct Environment { parent: Option>>, bindings: BTreeMap, diff --git a/user/fb_console/src/main.rs b/user/fb_console/src/main.rs index 938f675a12..ae157f6480 100644 --- a/user/fb_console/src/main.rs +++ b/user/fb_console/src/main.rs @@ -3,6 +3,7 @@ use gfxconsole::{Format, Framebuffer, GfxConsole, Pixel, Rgb32}; use ginkgo::{ + ast::BindingResolver, interpreter::{Interpreter, Value}, parse::Parser, }; @@ -66,6 +67,7 @@ fn spawn_framebuffer( let (output_sender, output_receiver) = thingbuf::mpsc::channel(16); let mut interpreter = Interpreter::new(); + let mut resolver = BindingResolver::new(); let mut current_line = String::new(); interpreter.define_native_function("print", |params| { @@ -95,9 +97,13 @@ fn spawn_framebuffer( needs_redraw = true; if key == '\n' { - let stmts = Parser::new(¤t_line).parse().unwrap(); + let mut stmts = Parser::new(¤t_line).parse().unwrap(); current_line.clear(); + for mut statement in &mut stmts { + resolver.resolve_bindings(&mut statement); + } + let mut result = None; for statement in stmts { if let Some(value) = interpreter.eval_stmt(statement) {