From f50ddf48db937911d7d7c7d47c37f3f3d45924f9 Mon Sep 17 00:00:00 2001 From: Celestino Amoroso Date: Mon, 23 Dec 2024 06:55:57 +0100 Subject: [PATCH] operator-range.go: range-term registered with symbol SymRange --- operator-range.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/operator-range.go b/operator-range.go index 1e2a15a..d46a387 100644 --- a/operator-range.go +++ b/operator-range.go @@ -34,12 +34,16 @@ func newRangeTerm(tk *Token) (inst *term) { } } +func changeColonToRange(t *term) { + if t.tk.IsSymbol(SymColon) { + t.tk.Sym = SymRange + t.evalFunc = evalRange + } +} + func evalRange(ctx ExprContext, opTerm *term) (v any, err error) { var leftValue, rightValue any - // if err = self.checkOperands(); err != nil { - // return - // } if len(opTerm.children) == 0 { leftValue = int64(0) rightValue = int64(-1) @@ -52,7 +56,8 @@ func evalRange(ctx ExprContext, opTerm *term) (v any, err error) { return } if !(IsInteger(leftValue) && IsInteger(rightValue)) { - err = opTerm.errIncompatibleTypes(leftValue, rightValue) + // err = opTerm.errIncompatibleTypes(leftValue, rightValue) + err = errRangeInvalidSpecification(opTerm) return } @@ -63,7 +68,15 @@ func evalRange(ctx ExprContext, opTerm *term) (v any, err error) { return } +func errRangeInvalidSpecification(t *term) error { + return t.Errorf("invalid range specification") +} + +func errRangeUnexpectedExpression(t *term) error { + return t.Errorf("unexpected range expression") +} + // init func init() { - registerTermConstructor(SymColon, newRangeTerm) + registerTermConstructor(SymRange, newRangeTerm) }