aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--evaluator/evaluator.go16
1 files changed, 11 insertions, 5 deletions
diff --git a/evaluator/evaluator.go b/evaluator/evaluator.go
index 89e6426..e7b7193 100644
--- a/evaluator/evaluator.go
+++ b/evaluator/evaluator.go
@@ -244,14 +244,20 @@ func evalIntegerInfixExpression(operator string, left, right object.Object) obje
}
func evalStringInfixExpression(operator string, left, right object.Object) object.Object {
- if operator != "+" {
+ leftVal := left.(*object.String).Value
+ rightVal := right.(*object.String).Value
+
+ switch operator {
+ case "+":
+ return &object.String{Value: leftVal + rightVal}
+ case "==":
+ return nativeBoolToBooleanObject(leftVal == rightVal)
+ case "!=":
+ return nativeBoolToBooleanObject(leftVal != rightVal)
+ default:
return newError("unknown operator: %s %s %s",
left.Type(), operator, right.Type())
}
-
- leftVal := left.(*object.String).Value
- rightVal := right.(*object.String).Value
- return &object.String{Value: leftVal + rightVal}
}
func evalIfExpression(ie *ast.IfExpression, env *object.Environment) object.Object {