ucl/cmdlang/inst.go

31 lines
456 B
Go

package cmdlang
import (
"context"
"strings"
)
type Inst struct {
rootEC *evalCtx
}
func New() *Inst {
rootEC := evalCtx{}
rootEC.addCmd("echo", invokableFunc(echoBuiltin))
return &Inst{
rootEC: &rootEC,
}
}
// TODO: return value?
func (inst *Inst) Eval(ctx context.Context, expr string) error {
ast, err := parse(strings.NewReader(expr))
if err != nil {
return err
}
eval := evaluator{}
return eval.evaluate(ctx, inst.rootEC, ast)
}