context.go: setVar() renamed as UnsafeSetVar()
This commit is contained in:
parent
9bd4a0ba23
commit
4d43ab2c2f
4
ast.go
4
ast.go
@ -119,7 +119,7 @@ func (self *ast) eval(ctx ExprContext, preset bool) (result any, err error) {
|
|||||||
if self.forest != nil {
|
if self.forest != nil {
|
||||||
for _, root := range self.forest {
|
for _, root := range self.forest {
|
||||||
if result, err = root.compute(ctx); err == nil {
|
if result, err = root.compute(ctx); err == nil {
|
||||||
ctx.setVar(ControlLastResult, result)
|
ctx.UnsafeSetVar(ControlLastResult, result)
|
||||||
} else {
|
} else {
|
||||||
//err = fmt.Errorf("error in expression nr %d: %v", i+1, err)
|
//err = fmt.Errorf("error in expression nr %d: %v", i+1, err)
|
||||||
break
|
break
|
||||||
@ -128,7 +128,7 @@ func (self *ast) eval(ctx ExprContext, preset bool) (result any, err error) {
|
|||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
result, err = self.root.compute(ctx)
|
result, err = self.root.compute(ctx)
|
||||||
ctx.setVar(ControlLastResult, result)
|
ctx.UnsafeSetVar(ControlLastResult, result)
|
||||||
}
|
}
|
||||||
// } else {
|
// } else {
|
||||||
// err = errors.New("empty expression")
|
// err = errors.New("empty expression")
|
||||||
|
@ -15,7 +15,7 @@ func exportVar(ctx ExprContext, name string, value any) {
|
|||||||
if name[0] == '@' {
|
if name[0] == '@' {
|
||||||
name = name[1:]
|
name = name[1:]
|
||||||
}
|
}
|
||||||
ctx.setVar(name, value)
|
ctx.UnsafeSetVar(name, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func exportFunc(ctx ExprContext, name string, info ExprFunc) {
|
func exportFunc(ctx ExprContext, name string, info ExprFunc) {
|
||||||
|
@ -33,7 +33,7 @@ type ExprContext interface {
|
|||||||
Clone() ExprContext
|
Clone() ExprContext
|
||||||
GetVar(varName string) (value any, exists bool)
|
GetVar(varName string) (value any, exists bool)
|
||||||
SetVar(varName string, value any)
|
SetVar(varName string, value any)
|
||||||
setVar(varName string, value any)
|
UnsafeSetVar(varName string, value any)
|
||||||
EnumVars(func(name string) (accept bool)) (varNames []string)
|
EnumVars(func(name string) (accept bool)) (varNames []string)
|
||||||
EnumFuncs(func(name string) (accept bool)) (funcNames []string)
|
EnumFuncs(func(name string) (accept bool)) (funcNames []string)
|
||||||
GetFuncInfo(name string) (item ExprFunc, exists bool)
|
GetFuncInfo(name string) (item ExprFunc, exists bool)
|
||||||
|
@ -87,10 +87,10 @@ func (functor *funcDefFunctor) Invoke(ctx ExprContext, name string, args []any)
|
|||||||
if functor, ok := arg.(Functor); ok {
|
if functor, ok := arg.(Functor); ok {
|
||||||
ctx.RegisterFunc(p, functor, 0, -1)
|
ctx.RegisterFunc(p, functor, 0, -1)
|
||||||
} else {
|
} else {
|
||||||
ctx.setVar(p, arg)
|
ctx.UnsafeSetVar(p, arg)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ctx.setVar(p, nil)
|
ctx.UnsafeSetVar(p, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result, err = functor.expr.eval(ctx, false)
|
result, err = functor.expr.eval(ctx, false)
|
||||||
|
@ -44,7 +44,7 @@ func evalAssign(ctx ExprContext, self *term) (v any, err error) {
|
|||||||
}
|
}
|
||||||
ctx.RegisterFunc(leftTerm.source(), functor, minArgs, maxArgs)
|
ctx.RegisterFunc(leftTerm.source(), functor, minArgs, maxArgs)
|
||||||
} else {
|
} else {
|
||||||
ctx.setVar(leftTerm.source(), v)
|
ctx.UnsafeSetVar(leftTerm.source(), v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -75,7 +75,7 @@ func evalAssignCoalesce(ctx ExprContext, self *term) (v any, err error) {
|
|||||||
ctx.RegisterFunc(leftTerm.source(), functor, 0, -1)
|
ctx.RegisterFunc(leftTerm.source(), functor, 0, -1)
|
||||||
} else {
|
} else {
|
||||||
v = rightValue
|
v = rightValue
|
||||||
ctx.setVar(leftTerm.source(), rightValue)
|
ctx.UnsafeSetVar(leftTerm.source(), rightValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -36,7 +36,7 @@ func (ctx *SimpleVarStore) GetVar(varName string) (v any, exists bool) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *SimpleVarStore) setVar(varName string, value any) {
|
func (ctx *SimpleVarStore) UnsafeSetVar(varName string, value any) {
|
||||||
// fmt.Printf("[%p] setVar(%v, %v)\n", ctx, varName, value)
|
// fmt.Printf("[%p] setVar(%v, %v)\n", ctx, varName, value)
|
||||||
ctx.varStore[varName] = value
|
ctx.varStore[varName] = value
|
||||||
}
|
}
|
||||||
@ -98,8 +98,8 @@ func varsCtxToBuilder(sb *strings.Builder, ctx ExprContext, indent int) {
|
|||||||
sb.WriteString(f.ToString(0))
|
sb.WriteString(f.ToString(0))
|
||||||
} else if _, ok = value.(Functor); ok {
|
} else if _, ok = value.(Functor); ok {
|
||||||
sb.WriteString("func(){}")
|
sb.WriteString("func(){}")
|
||||||
} else if _, ok = value.(map[any]any); ok {
|
// } else if _, ok = value.(map[any]any); ok {
|
||||||
sb.WriteString("dict{}")
|
// sb.WriteString("dict{}")
|
||||||
} else {
|
} else {
|
||||||
sb.WriteString(fmt.Sprintf("%v", value))
|
sb.WriteString(fmt.Sprintf("%v", value))
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user