monna/evaluator/evaluator.go
tijani 886a16e706 Spelling corrections
Interpreter can now evaluate Booleans

git-svn-id: https://svn.tlawal.org/svn/monkey@45 f6afcba9-9ef1-4bdd-9b72-7484f5705bac
2022-08-07 14:58:35 +00:00

36 lines
628 B
Go

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