aboutsummaryrefslogtreecommitdiff
path: root/evaluator/evaluator.go
diff options
context:
space:
mode:
Diffstat (limited to 'evaluator/evaluator.go')
-rw-r--r--evaluator/evaluator.go45
1 files changed, 9 insertions, 36 deletions
diff --git a/evaluator/evaluator.go b/evaluator/evaluator.go
index b4e37cf..a6b21cc 100644
--- a/evaluator/evaluator.go
+++ b/evaluator/evaluator.go
@@ -137,10 +137,7 @@ func evalProgram(program *ast.Program, env *object.Environment) object.Object {
return result
}
-func evalBlockStatement(
- block *ast.BlockStatement,
- env *object.Environment,
-) object.Object {
+func evalBlockStatement(block *ast.BlockStatement, env *object.Environment) object.Object {
var result object.Object
for _, statement := range block.Statements {
@@ -175,10 +172,7 @@ func evalPrefixExpression(operator string, right object.Object) object.Object {
}
}
-func evalInfixExpression(
- operator string,
- left, right object.Object,
-) object.Object {
+func evalInfixExpression(operator string, left, right object.Object) object.Object {
switch {
case left.Type() == object.INTEGER_OBJ && right.Type() == object.INTEGER_OBJ:
return evalIntegerInfixExpression(operator, left, right)
@@ -219,10 +213,7 @@ func evalMinusPrefixOperatorExpression(right object.Object) object.Object {
return &object.Integer{Value: -value}
}
-func evalIntegerInfixExpression(
- operator string,
- left, right object.Object,
-) object.Object {
+func evalIntegerInfixExpression(operator string, left, right object.Object) object.Object {
leftVal := left.(*object.Integer).Value
rightVal := right.(*object.Integer).Value
@@ -249,10 +240,7 @@ func evalIntegerInfixExpression(
}
}
-func evalStringInfixExpression(
- operator string,
- left, right object.Object,
-) object.Object {
+func evalStringInfixExpression(operator string, left, right object.Object) object.Object {
if operator != "+" {
return newError("unknown operator: %s %s %s",
left.Type(), operator, right.Type())
@@ -263,10 +251,7 @@ func evalStringInfixExpression(
return &object.String{Value: leftVal + rightVal}
}
-func evalIfExpression(
- ie *ast.IfExpression,
- env *object.Environment,
-) object.Object {
+func evalIfExpression(ie *ast.IfExpression, env *object.Environment) object.Object {
condition := Eval(ie.Condition, env)
if isError(condition) {
return condition
@@ -281,10 +266,7 @@ func evalIfExpression(
}
}
-func evalIdentifier(
- node *ast.Identifier,
- env *object.Environment,
-) object.Object {
+func evalIdentifier(node *ast.Identifier, env *object.Environment) object.Object {
if val, ok := env.Get(node.Value); ok {
return val
}
@@ -320,10 +302,7 @@ func isError(obj object.Object) bool {
return false
}
-func evalExpressions(
- exps []ast.Expression,
- env *object.Environment,
-) []object.Object {
+func evalExpressions(exps []ast.Expression, env *object.Environment) []object.Object {
var result []object.Object
for _, e := range exps {
@@ -353,10 +332,7 @@ func applyFunction(fn object.Object, args []object.Object) object.Object {
}
}
-func extendFunctionEnv(
- fn *object.Function,
- args []object.Object,
-) *object.Environment {
+func extendFunctionEnv(fn *object.Function, args []object.Object) *object.Environment {
env := object.NewEnclosedEnvironment(fn.Env)
for paramIdx, param := range fn.Parameters {
@@ -397,10 +373,7 @@ func evalArrayIndexExpression(array, index object.Object) object.Object {
return arrayObject.Elements[idx]
}
-func evalHashLiteral(
- node *ast.HashLiteral,
- env *object.Environment,
-) object.Object {
+func evalHashLiteral(node *ast.HashLiteral, env *object.Environment) object.Object {
pairs := make(map[object.HashKey]object.HashPair)
for keyNode, valueNode := range node.Pairs {