Support NotEqual builtin
This commit is contained in:
parent
d9f53abeb2
commit
a3f2539993
@ -33,6 +33,7 @@ pub enum Builtin {
|
|||||||
IOGetLine,
|
IOGetLine,
|
||||||
Assignment,
|
Assignment,
|
||||||
Concatenate,
|
Concatenate,
|
||||||
|
NotEqual,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Builtin {
|
impl Builtin {
|
||||||
@ -65,6 +66,7 @@ impl Builtin {
|
|||||||
Concatenate => ty!(StringT -> StringT -> StringT),
|
Concatenate => ty!(StringT -> StringT -> StringT),
|
||||||
Increment => ty!(Nat -> Int),
|
Increment => ty!(Nat -> Int),
|
||||||
Negate => ty!(Nat -> Int),
|
Negate => ty!(Nat -> Int),
|
||||||
|
NotEqual => ty!(Nat -> Nat -> Bool),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,6 +118,7 @@ impl FromStr for Builtin {
|
|||||||
"<" => LessThan,
|
"<" => LessThan,
|
||||||
"<=" => LessThanOrEqual,
|
"<=" => LessThanOrEqual,
|
||||||
"==" => Equality,
|
"==" => Equality,
|
||||||
|
"!=" => NotEqual,
|
||||||
"=" => Assignment,
|
"=" => Assignment,
|
||||||
"<=>" => Comparison,
|
"<=>" => Comparison,
|
||||||
"print" => IOPrint,
|
"print" => IOPrint,
|
||||||
|
@ -393,6 +393,12 @@ impl<'a, 'b> Evaluator<'a, 'b> {
|
|||||||
(Equality, Lit(Bool(l)), Lit(Bool(r))) => Bool(l == r).into(),
|
(Equality, Lit(Bool(l)), Lit(Bool(r))) => Bool(l == r).into(),
|
||||||
(Equality, Lit(StringLit(ref l)), Lit(StringLit(ref r))) => Bool(l == r).into(),
|
(Equality, Lit(StringLit(ref l)), Lit(StringLit(ref r))) => Bool(l == r).into(),
|
||||||
|
|
||||||
|
(NotEqual, Lit(Nat(l)), Lit(Nat(r))) => Bool(l != r).into(),
|
||||||
|
(NotEqual, Lit(Int(l)), Lit(Int(r))) => Bool(l != r).into(),
|
||||||
|
(NotEqual, Lit(Float(l)), Lit(Float(r))) => Bool(l != r).into(),
|
||||||
|
(NotEqual, Lit(Bool(l)), Lit(Bool(r))) => Bool(l != r).into(),
|
||||||
|
(NotEqual, Lit(StringLit(ref l)), Lit(StringLit(ref r))) => Bool(l != r).into(),
|
||||||
|
|
||||||
(LessThan, Lit(Nat(l)), Lit(Nat(r))) => Bool(l < r).into(),
|
(LessThan, Lit(Nat(l)), Lit(Nat(r))) => Bool(l < r).into(),
|
||||||
(LessThan, Lit(Int(l)), Lit(Int(r))) => Bool(l < r).into(),
|
(LessThan, Lit(Int(l)), Lit(Int(r))) => Bool(l < r).into(),
|
||||||
(LessThan, Lit(Float(l)), Lit(Float(r))) => Bool(l < r).into(),
|
(LessThan, Lit(Float(l)), Lit(Float(r))) => Bool(l < r).into(),
|
||||||
|
@ -419,7 +419,7 @@ fn loops() {
|
|||||||
let source = r#"
|
let source = r#"
|
||||||
let mut a = 0
|
let mut a = 0
|
||||||
let mut count = 0
|
let mut count = 0
|
||||||
while !(a == 5) {
|
while a != 5 {
|
||||||
a = a + 1
|
a = a + 1
|
||||||
count = count + 100
|
count = count + 100
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user