Implementing a few more operators
WIP - not done
This commit is contained in:
parent
4cf165b408
commit
23d2209d8b
@ -259,6 +259,8 @@ impl<'a> Evaluator<'a> {
|
|||||||
match (&op[..], left, right) {
|
match (&op[..], left, right) {
|
||||||
("+", Number(l), Number(r)) => Number(l + r),
|
("+", Number(l), Number(r)) => Number(l + r),
|
||||||
("+", StringLiteral(s1), StringLiteral(s2)) => StringLiteral(Rc::new(format!("{}{}", *s1, *s2))),
|
("+", StringLiteral(s1), StringLiteral(s2)) => StringLiteral(Rc::new(format!("{}{}", *s1, *s2))),
|
||||||
|
("+", StringLiteral(s1), Number(r)) => StringLiteral(Rc::new(format!("{}{}", *s1, r))),
|
||||||
|
("+", Number(l), StringLiteral(s1)) => StringLiteral(Rc::new(format!("{}{}", l, *s1))),
|
||||||
("-", Number(l), Number(r)) => Number(l - r),
|
("-", Number(l), Number(r)) => Number(l - r),
|
||||||
("*", Number(l), Number(r)) => Number(l * r),
|
("*", Number(l), Number(r)) => Number(l * r),
|
||||||
("/", Number(l), Number(r)) if r != 0.0 => Number(l / r),
|
("/", Number(l), Number(r)) if r != 0.0 => Number(l / r),
|
||||||
@ -271,6 +273,10 @@ impl<'a> Evaluator<'a> {
|
|||||||
("==", Null, Null) => truthy,
|
("==", Null, Null) => truthy,
|
||||||
("==", StringLiteral(s1), StringLiteral(s2)) => if s1 == s2 { truthy } else { falsy },
|
("==", StringLiteral(s1), StringLiteral(s2)) => if s1 == s2 { truthy } else { falsy },
|
||||||
("==", _, _) => falsy,
|
("==", _, _) => falsy,
|
||||||
|
("+=", l, r) => BinExp("=", l, BinExp("+", l, r)),
|
||||||
|
("-=", l, r) => BinExp("=", l, BinExp("-", l, r)),
|
||||||
|
("*=", l, r) => BinExp("=", l, BinExp("*", l, r)),
|
||||||
|
("/=", l, r) => BinExp("=", l, BinExp("/", l, r)),
|
||||||
_ => falsy,
|
_ => falsy,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,8 +127,8 @@ impl Parser {
|
|||||||
"*" => 20,
|
"*" => 20,
|
||||||
"/" => 20,
|
"/" => 20,
|
||||||
"%" => 20,
|
"%" => 20,
|
||||||
"=" => 1,
|
"==" => 40
|
||||||
"==" => 40,
|
"=" | "+=" | "-=" | "*=" | "/=" => 1,
|
||||||
">" | ">=" | "<" | "<=" => 30,
|
">" | ">=" | "<" | "<=" => 30,
|
||||||
_ => 255,
|
_ => 255,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user