feat(if): Support inequality operator

This commit is contained in:
Kyle Fuller
2016-11-28 17:56:49 +00:00
parent e989317929
commit ab6f1a032d
5 changed files with 40 additions and 5 deletions

View File

@@ -134,11 +134,11 @@ final class AndExpression: Expression, InfixOperator, CustomStringConvertible {
}
final class EqualityExpression: Expression, InfixOperator, CustomStringConvertible {
class EqualityExpression: Expression, InfixOperator, CustomStringConvertible {
let lhs: Expression
let rhs: Expression
init(lhs: Expression, rhs: Expression) {
required init(lhs: Expression, rhs: Expression) {
self.lhs = lhs
self.rhs = rhs
}
@@ -170,6 +170,17 @@ final class EqualityExpression: Expression, InfixOperator, CustomStringConvertib
}
class InequalityExpression: EqualityExpression {
override var description: String {
return "(\(lhs) != \(rhs))"
}
override func evaluate(context: Context) throws -> Bool {
return try !super.evaluate(context: context)
}
}
func toNumber(value: Any) -> Float80? {
if let value = value as? Float {
return Float80(value)

View File

@@ -18,6 +18,7 @@ let operators: [Operator] = [
.infix("and", 7, AndExpression.self),
.prefix("not", 8, NotExpression.self),
.infix("==", 10, EqualityExpression.self),
.infix("!=", 10, InequalityExpression.self),
]