1
0
Fork 0
mirror of https://tildegit.org/karx/sandwich.git synced 2024-05-07 07:45:48 -05:00

Add support for functions and variables in if statements

This commit is contained in:
~karx 2021-04-08 15:41:38 -05:00
parent 37d0919655
commit 0fbdcdfec0
Signed by: karx
GPG key ID: A794DA2529474BA5

View file

@ -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::<Vec<char>>()[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),