Skip to content

Commit

Permalink
feat(eval): provide evaluation of expression statements and integer l…
Browse files Browse the repository at this point in the history
…iterals
  • Loading branch information
gustavodiasag committed Feb 1, 2024
1 parent d0fbd91 commit da1f731
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions eval/eval.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package eval

import (
"monkey/ast"
"monkey/object"
)

func Eval(node ast.Node) object.Object {
switch node := node.(type) {
case *ast.Program:
return evalStatements(node.Statements)
case *ast.ExpressionStatement:
return Eval(node.Expression)
case *ast.IntegerLiteral:
return &object.Integer{Value: node.Value}
}

return nil
}

func evalStatements(stmts []ast.Statement) object.Object {
var result object.Object

for _, stmt := range stmts {
result = Eval(stmt)
}
return result
}

0 comments on commit da1f731

Please sign in to comment.