commit 83a8899ff3b6ea88f6995be0a9009c5a30ead677
parent 1fb0530a1335d473fdc3b9a7b6eb59f099a653f8
Author: Yash <nerdstep710@gmail.com>
Date: Thu, 4 Feb 2021 11:45:53 -0600
Refactor evaluator into eval func
Diffstat:
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;
}