sandwich

A funny programming language written in Rust
git clone https://tilde.team/~karx/sandwich.git
Log | Files | Refs | README | LICENSE

commit 83a8899ff3b6ea88f6995be0a9009c5a30ead677
parent 1fb0530a1335d473fdc3b9a7b6eb59f099a653f8
Author: Yash <nerdstep710@gmail.com>
Date:   Thu,  4 Feb 2021 11:45:53 -0600

Refactor evaluator into eval func

Diffstat:
Minp.txt | 2+-
Msrc/main.rs | 19++++++++++++-------
2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/inp.txt b/inp.txt @@ -1 +1 @@ -pH pe pl pl po p, pW po pr pl pd p! +pHello pWorld! diff --git a/src/main.rs b/src/main.rs @@ -23,18 +23,23 @@ impl Program { return Program{ data: op_list, pc: 0 }; } + fn eval(&self, instruction: &String) { + let instruction_vec: Vec<char> = instruction.chars().collect(); + let opcode = instruction_vec[0]; + let arguments = &instruction[1..]; + + match opcode { + 'p' => println!("{}", arguments), + _ => panic!("SyntaxError at opcode {}!", self.pc) + } + } + fn run(&mut self) { println!("{}", self); while self.pc < self.data.len() { let instruction = &self.data[self.pc]; - let instruction_vec: Vec<char> = instruction.chars().collect(); - let opcode = instruction_vec[0]; - - match opcode { - 'p' => print!("{}", instruction_vec[1]), - _ => panic!("SyntaxError at opcode {}!", self.pc) - } + self.eval(instruction); self.pc = self.pc + 1; }