diff --git a/src/bytecode.rs b/src/bytecode.rs index 58ba890..f7b92ee 100644 --- a/src/bytecode.rs +++ b/src/bytecode.rs @@ -31,6 +31,8 @@ pub enum OP { Value(u32), Print, + + DbgPrint, } #[derive(Debug, Default)] @@ -94,7 +96,10 @@ impl Compiler { self.overwrite_i64(idx_else, self.ops.len() as i64); }, - Stmt::DbgPrint(_) => todo!(), + Stmt::DbgPrint(expr) => { + self.compile_expr(expr); + self.ops.push(OP::DbgPrint); + } Stmt::Print(expr) => { self.compile_expr(expr); self.ops.push(OP::Print); diff --git a/src/vm.rs b/src/vm.rs index 6d5be5b..902ec92 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -58,6 +58,13 @@ impl Vm { .expect("Trying to pop value from stack for printing"); print!("{}", val); } + OP::DbgPrint => { + let val = self + .stack + .pop() + .expect("Trying to pop value from stack for printing"); + print!("{:?}", val); + } OP::Add => { let vals = self.pop2_i64();