Implement a lot more ops
This commit is contained in:
parent
065e58f87e
commit
ce71254b69
@ -389,21 +389,19 @@ impl<'a> State<'a> {
|
|||||||
|
|
||||||
Ok(match (name.as_str(), evaled_args.as_slice()) {
|
Ok(match (name.as_str(), evaled_args.as_slice()) {
|
||||||
("+", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l + r)),
|
("+", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l + r)),
|
||||||
/*
|
("++", &[Lit(StringLit(ref s1)), Lit(StringLit(ref s2))]) => Lit(StringLit(Rc::new(format!("{}{}", s1, s2)))),
|
||||||
("++", Str(s1), Str(s2)) => Str(format!("{}{}", s1, s2)),
|
("-", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l - r)),
|
||||||
("-", UnsignedInt(l), UnsignedInt(r)) => UnsignedInt(l - r),
|
("*", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l * r)),
|
||||||
("*", UnsignedInt(l), UnsignedInt(r)) => UnsignedInt(l * r),
|
("/", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Float((l as f64)/ (r as f64))),
|
||||||
("/", UnsignedInt(l), UnsignedInt(r)) => Float((l as f64)/ (r as f64)),
|
("//", &[Lit(Nat(l)), Lit(Nat(r))]) => if r == 0 {
|
||||||
("//", UnsignedInt(l), UnsignedInt(r)) => if r == 0 {
|
|
||||||
return Err(format!("Runtime error: divide by zero"));
|
return Err(format!("Runtime error: divide by zero"));
|
||||||
} else {
|
} else {
|
||||||
UnsignedInt(l / r)
|
Lit(Nat(l / r))
|
||||||
},
|
},
|
||||||
("%", UnsignedInt(l), UnsignedInt(r)) => UnsignedInt(l % r),
|
("%", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l % r)),
|
||||||
("^", UnsignedInt(l), UnsignedInt(r)) => UnsignedInt(l ^ r),
|
("^", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l ^ r)),
|
||||||
("&", UnsignedInt(l), UnsignedInt(r)) => UnsignedInt(l & r),
|
("&", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l & r)),
|
||||||
("|", UnsignedInt(l), UnsignedInt(r)) => UnsignedInt(l | r),
|
("|", &[Lit(Nat(l)), Lit(Nat(r))]) => Lit(Nat(l | r)),
|
||||||
*/
|
|
||||||
_ => return Err(format!("Runtime error: not yet implemented")),
|
_ => return Err(format!("Runtime error: not yet implemented")),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user