moved a subset of source file to the kern package
This commit is contained in:
+20
-16
@@ -4,6 +4,10 @@
|
||||
// operator-default.go
|
||||
package expr
|
||||
|
||||
import (
|
||||
"git.portale-stac.it/go-pkg/expr/kern"
|
||||
)
|
||||
|
||||
//-------- default term
|
||||
|
||||
func newDefaultTerm(tk *Token) (inst *term) {
|
||||
@@ -16,7 +20,7 @@ func newDefaultTerm(tk *Token) (inst *term) {
|
||||
}
|
||||
}
|
||||
|
||||
func evalDefault(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
func evalDefault(ctx kern.ExprContext, opTerm *term) (v any, err error) {
|
||||
var rightValue any
|
||||
|
||||
if err = opTerm.checkOperands(); err != nil {
|
||||
@@ -26,13 +30,13 @@ func evalDefault(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
leftTerm := opTerm.children[0]
|
||||
if leftTerm.tk.Sym != SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
err = kern.ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
}
|
||||
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.source()); exists {
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.Source()); exists {
|
||||
v = leftValue
|
||||
} else if rightValue, err = opTerm.children[1].compute(ctx); err == nil {
|
||||
} else if rightValue, err = opTerm.children[1].Compute(ctx); err == nil {
|
||||
v = rightValue
|
||||
}
|
||||
return
|
||||
@@ -50,7 +54,7 @@ func newAlternateTerm(tk *Token) (inst *term) {
|
||||
}
|
||||
}
|
||||
|
||||
func evalAlternate(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
func evalAlternate(ctx kern.ExprContext, opTerm *term) (v any, err error) {
|
||||
var rightValue any
|
||||
|
||||
if err = opTerm.checkOperands(); err != nil {
|
||||
@@ -60,12 +64,12 @@ func evalAlternate(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
leftTerm := opTerm.children[0]
|
||||
if leftTerm.tk.Sym != SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
err = kern.ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
}
|
||||
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.source()); exists && leftValue != nil {
|
||||
if rightValue, err = opTerm.children[1].compute(ctx); err == nil {
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.Source()); exists && leftValue != nil {
|
||||
if rightValue, err = opTerm.children[1].Compute(ctx); err == nil {
|
||||
v = rightValue
|
||||
}
|
||||
} else {
|
||||
@@ -86,7 +90,7 @@ func newDefaultAssignTerm(tk *Token) (inst *term) {
|
||||
}
|
||||
}
|
||||
|
||||
func evalAssignDefault(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
func evalAssignDefault(ctx kern.ExprContext, opTerm *term) (v any, err error) {
|
||||
var rightValue any
|
||||
|
||||
if err = opTerm.checkOperands(); err != nil {
|
||||
@@ -96,21 +100,21 @@ func evalAssignDefault(ctx ExprContext, opTerm *term) (v any, err error) {
|
||||
leftTerm := opTerm.children[0]
|
||||
if leftTerm.tk.Sym != SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
err = kern.ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
}
|
||||
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.source()); exists {
|
||||
if leftValue, exists := ctx.GetVar(leftTerm.Source()); exists {
|
||||
v = leftValue
|
||||
} else if rightValue, err = opTerm.children[1].compute(ctx); err == nil {
|
||||
if functor, ok := rightValue.(Functor); ok {
|
||||
} else if rightValue, err = opTerm.children[1].Compute(ctx); err == nil {
|
||||
if functor, ok := rightValue.(kern.Functor); ok {
|
||||
//ctx.RegisterFunc(leftTerm.source(), functor, 0, -1)
|
||||
ctx.RegisterFunc(leftTerm.source(), functor, TypeAny, []ExprFuncParam{
|
||||
NewFuncParamFlag(ParamValue, PfDefault|PfRepeat),
|
||||
ctx.RegisterFunc(leftTerm.Source(), functor, kern.TypeAny, []kern.ExprFuncParam{
|
||||
NewFuncParamFlag(kern.ParamValue, PfDefault|PfRepeat),
|
||||
})
|
||||
} else {
|
||||
v = rightValue
|
||||
ctx.UnsafeSetVar(leftTerm.source(), rightValue)
|
||||
ctx.UnsafeSetVar(leftTerm.Source(), rightValue)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user