Evaluate Integers

This commit is contained in:
Chuck Smith
2024-01-18 16:45:32 -05:00
parent 96dc5b448e
commit beed497ed5
4 changed files with 133 additions and 2 deletions

34
evaluator/evaluator.go Normal file
View File

@@ -0,0 +1,34 @@
package evaluator
import (
"monkey/ast"
"monkey/object"
)
func Eval(node ast.Node) object.Object {
switch node := node.(type) {
// Statements
case *ast.Program:
return evalStatements(node.Statements)
case *ast.ExpressionStatement:
return Eval(node.Expression)
// Expressions
case *ast.IntegerLiteral:
return &object.Integer{Value: node.Value}
}
return nil
}
func evalStatements(stmts []ast.Statement) object.Object {
var result object.Object
for _, statement := range stmts {
result = Eval(statement)
}
return result
}