Files
lambda/internal/executer/executer.go

33 lines
631 B
Go

package executer
import (
"log/slog"
"git.maximhutz.com/max/lambda/internal/config"
"git.maximhutz.com/max/lambda/pkg/emitter"
"git.maximhutz.com/max/lambda/pkg/lambda"
)
type Executor struct {
Config *config.Config
Expression *lambda.Expression
emitter.Emitter
}
func New(config *config.Config, expression *lambda.Expression) *Executor {
return &Executor{Config: config, Expression: expression}
}
func (e Executor) Run() {
e.Emit("start")
for lambda.ReduceOnce(e.Expression) {
e.Emit("step")
if e.Config.Verbose {
slog.Info("reduction", "tree", lambda.Stringify(*e.Expression))
}
}
e.Emit("end")
}