diff --git a/src/eval.rs b/src/eval.rs index 92ef628..8f15383 100644 --- a/src/eval.rs +++ b/src/eval.rs @@ -19,3 +19,18 @@ pub fn do_math(arguments: String, operator: char) -> u32 { _ => panic!("SyntaxError: Unknown operator {}", operator), } } + +pub fn args_or_comments(arguments: &str) -> String { + let argument_vec: Vec = arguments.chars().collect(); + let mut builder: String = String::from(""); + + for char in argument_vec { + if char == '#' { + break; + } else { + builder.push_str(&char.to_string()); + } + } + + builder +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 2ff138c..9788513 100644 --- a/src/main.rs +++ b/src/main.rs @@ -143,18 +143,19 @@ impl Program { fn parse(&mut self, instruction: &String) { // Opcode is the first character, arguments are everything after the first char let opcode = instruction.chars().collect::>()[0]; - let arguments = &instruction[1..]; + let arguments = eval::args_or_comments(&instruction[1..]); - match opcode { - 'p' => println!("{}", self.args_or_funcs(&self.args_or_vars(arguments))), - 'a' => println!("{}", eval::do_math(self.args_or_vars(arguments), '+')), - 's' => println!("{}", eval::do_math(self.args_or_vars(arguments), '-')), - 'm' => println!("{}", eval::do_math(self.args_or_vars(arguments), '*')), - 'd' => println!("{}", eval::do_math(self.args_or_vars(arguments), '/')), - 'l' => self.add_var(arguments), - 'f' => self.add_func(arguments), - '#' => {} // Do nothing for comments - _ => panic!("SyntaxError at opcode {}: Unknown opcode {}", self.pc, opcode), + if opcode != '#' { + match opcode { + 'p' => println!("{}", self.args_or_funcs(&self.args_or_vars(&arguments))), + 'a' => println!("{}", eval::do_math(self.args_or_vars(&arguments), '+')), + 's' => println!("{}", eval::do_math(self.args_or_vars(&arguments), '-')), + 'm' => println!("{}", eval::do_math(self.args_or_vars(&arguments), '*')), + 'd' => println!("{}", eval::do_math(self.args_or_vars(&arguments), '/')), + 'l' => self.add_var(&arguments), + 'f' => self.add_func(&arguments), + _ => panic!("SyntaxError at opcode {}: Unknown opcode {}", self.pc, opcode), + } } }