From 275ee10822d8d5108e34166dbaf486ddb5a56a59 Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Mon, 25 Aug 2025 10:24:00 -0400 Subject: add rot and swap --- src/forth/compiler.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/forth/compiler.rs') diff --git a/src/forth/compiler.rs b/src/forth/compiler.rs index 97e94a9..89964e1 100644 --- a/src/forth/compiler.rs +++ b/src/forth/compiler.rs @@ -199,6 +199,8 @@ impl<'a> Compiler<'a> { "/" => self.bc_push(OpCode::Div, anno), "dup" => self.bc_push(OpCode::Dup, anno), "drop" => self.bc_push(OpCode::Drop, anno), + "rot" => self.bc_push(OpCode::Rot, anno), + "swap" => self.bc_push(OpCode::Swap, anno), "=" => self.bc_push(OpCode::EQ, anno), ">" => self.bc_push(OpCode::GT, anno), ">=" => self.bc_push(OpCode::GTE, anno), @@ -257,6 +259,20 @@ mod tests { assert_eq!(main, vec![OpCode::Sub]); } + #[test] + fn rot_opcode() { + let comp = compiler_for("rot\n"); + let main = &comp.wordlist.0[0]; + assert_eq!(main, vec![OpCode::Rot]); + } + + #[test] + fn swap_opcode() { + let comp = compiler_for("swap\n"); + let main = &comp.wordlist.0[0]; + assert_eq!(main, vec![OpCode::Swap]); + } + #[test] fn def_word() { let comp = compiler_for(": add2 2 + ; 3 add2\n"); -- cgit v1.3