add string comparison
Some checks failed
Build / build (push) Failing after 1m41s
Test / build (push) Failing after 11m44s

This commit is contained in:
Chuck Smith
2024-03-15 14:20:04 -04:00
parent d7938e59e4
commit c818591f79
4 changed files with 40 additions and 5 deletions

View File

@@ -242,14 +242,23 @@ func evalInfixExpression(operator string, left, right object.Object) object.Obje
}
func evalStringInfixExpression(operator string, left object.Object, right object.Object) object.Object {
if operator != "+" {
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}
switch operator {
case "+":
return &object.String{Value: leftVal + rightVal}
case "<":
return nativeBoolToBooleanObject(leftVal < rightVal)
case ">":
return nativeBoolToBooleanObject(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())
}
}
func evalIntegerInfixExpression(operator string, left, right object.Object) object.Object {