Przeglądaj źródła

infix expression (boolean) object evaluator

simon 3 lat temu
rodzic
commit
42ad936074
2 zmienionych plików z 7 dodań i 0 usunięć
  1. 4 0
      evaluator/evaluator.go
  2. 3 0
      evaluator/evaluator_test.go

+ 4 - 0
evaluator/evaluator.go

@@ -68,6 +68,10 @@ func evalInfixExpression(operator string, left object.Object, right object.Objec
 	switch {
 	case left.Type() == object.IntegerObj && right.Type() == object.IntegerObj:
 		return evalIntegerInfixExpression(operator, left, right)
+	case operator == "==":
+		return nativeBooleanObject(left == right)
+	case operator == "!=":
+		return nativeBooleanObject(left != right)
 	default:
 		return NULL
 	}

+ 3 - 0
evaluator/evaluator_test.go

@@ -40,6 +40,9 @@ func TestEvalBooleanExpression(t *testing.T) {
 		{"1 != 1", false},
 		{"1 == 2", false},
 		{"1 != 2", true},
+		{"true == true", true},
+		{"false == false", true},
+		{"(1 < 2) == true", true},
 	}
 
 	for _, tt := range tests {