diff --git a/inp.txt b/inp.txt index 4d6dc3d..0720e77 100644 --- 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 index 2c395c7..d8155b2 100644 --- 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 = 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 = 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; }