diff --git a/src/main.rs b/src/main.rs index a2b36e1..aefc1d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -236,15 +236,15 @@ 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 = eval::args_or_comments(&instruction[1..]); if opcode != '#' { + let arguments = self.args_or_funcs(&self.args_or_vars(&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), '/')), + 'p' => println!("{}", arguments), + 'a' => println!("{}", eval::do_math(arguments, '+')), + 's' => println!("{}", eval::do_math(arguments, '-')), + 'm' => println!("{}", eval::do_math(arguments, '*')), + 'd' => println!("{}", eval::do_math(arguments, '/')), 'l' => self.add_var(&arguments), 'f' => self.add_func(&arguments), 'i' => self.run_external(arguments),