diff --git a/operand-expr.go b/operand-expr.go index e619d63..3038e2c 100644 --- a/operand-expr.go +++ b/operand-expr.go @@ -27,8 +27,3 @@ func evalExpr(ctx ExprContext, self *term) (v any, err error) { } return } - -// init -// func init() { -// registerTermConstructor(SymExpression, newExprTerm) -// } diff --git a/operand-func.go b/operand-func.go index dda1141..ce86862 100644 --- a/operand-func.go +++ b/operand-func.go @@ -40,20 +40,6 @@ func evalFuncCall(parentCtx ExprContext, self *term) (v any, err error) { return } -func exportVar(ctx ExprContext, name string, value any) { - if name[0] == '@' { - name = name[1:] - } - ctx.setVar(name, value) -} - -func exportFunc(ctx ExprContext, name string, info ExprFunc) { - if name[0] == '@' { - name = name[1:] - } - ctx.RegisterFunc(name, info.Functor(), info.MinArgs(), info.MaxArgs()) -} - // -------- function definition term func newFuncDefTerm(tk *Token, args []*term) *term { return &term{ diff --git a/operator-selector.go b/operator-selector.go index d5ac65a..33608a8 100644 --- a/operator-selector.go +++ b/operator-selector.go @@ -4,65 +4,7 @@ // operator-selector.go package expr -// //-------- export all term - -// func newSelectorTerm(tk *Token) (inst *term) { -// return &term{ -// tk: *tk, -// children: make([]*term, 0, 3), -// position: posMultifix, -// priority: priSelector, -// evalFunc: evalSelector, -// } -// } - -// func isSelectorCase(ctx ExprContext, exprValue, caseSel any, caseIndex int) (selectedValue any, err error) { -// caseData, _ := caseSel.(*selectorCase) -// if caseData.filterList == nil { -// selectedValue, err = caseData.caseExpr.eval(ctx, false) -// } else { -// filterList := caseData.filterList.children -// if len(filterList) == 0 && exprValue == int64(caseIndex) { -// selectedValue, err = caseData.caseExpr.eval(ctx, false) -// } else { -// var caseValue any -// for _, caseTerm := range filterList { -// if caseValue, err = caseTerm.compute(ctx); err != nil || caseValue == exprValue { -// selectedValue, err = caseData.caseExpr.eval(ctx, false) -// break -// } -// } -// } -// } -// return -// } - -// func evalSelector(ctx ExprContext, self *term) (v any, err error) { -// var exprValue any -// // var caseList []*term - -// if err = self.checkOperands(); err != nil { -// return -// } -// exprTerm := self.children[0] -// if exprValue, err = exprTerm.compute(ctx); err != nil { -// return -// } - -// caseList := self.children[1:] -// for i, caseTerm := range caseList { -// caseSel := caseTerm.value() -// if v, err = isSelectorCase(ctx, exprValue, caseSel, i); err != nil || v != nil { -// break -// } -// } -// if err == nil && v == nil { -// err = exprTerm.tk.Errorf("no case catches the value (%v) of the selection expression", exprValue) -// } -// return -// } - -//-------- export all term +//-------- selector term func newSelectorTerm(tk *Token) (inst *term) { return &term{ @@ -74,7 +16,7 @@ func newSelectorTerm(tk *Token) (inst *term) { } } -func isSelectorCase(ctx ExprContext, exprValue, caseSel any, caseIndex int) (match bool, selectedValue any, err error) { +func trySelectorCase(ctx ExprContext, exprValue, caseSel any, caseIndex int) (match bool, selectedValue any, err error) { caseData, _ := caseSel.(*selectorCase) if caseData.filterList == nil { selectedValue, err = caseData.caseExpr.eval(ctx, false) @@ -113,7 +55,7 @@ func evalSelector(ctx ExprContext, self *term) (v any, err error) { caseList, _ := caseListTerm.value().([]*term) for i, caseTerm := range caseList { caseSel := caseTerm.value() - if match, v, err = isSelectorCase(ctx, exprValue, caseSel, i); err != nil || match { + if match, v, err = trySelectorCase(ctx, exprValue, caseSel, i); err != nil || match { break } }