several changes:
1. moved scan/symbol.go to new package sym and adapted all files that reference Symbol type and its values. 2. new type interval defined by begin, end and step values. 3. replaced operator-range.go with operator-interval.go. 4. replaced range operator begin:end with begin..end..step. 5. new implementation of sub-collection extraction based on new interval literal.
This commit is contained in:
+7
-6
@@ -7,6 +7,7 @@ package expr
|
||||
import (
|
||||
"git.portale-stac.it/go-pkg/expr/kern"
|
||||
"git.portale-stac.it/go-pkg/expr/scan"
|
||||
"git.portale-stac.it/go-pkg/expr/sym"
|
||||
)
|
||||
|
||||
//-------- default term
|
||||
@@ -29,7 +30,7 @@ func evalDefault(ctx kern.ExprContext, opTerm *scan.Term) (v any, err error) {
|
||||
}
|
||||
|
||||
leftTerm := opTerm.Children[0]
|
||||
if leftTerm.Tk.Sym != scan.SymVariable {
|
||||
if leftTerm.Tk.Sym != sym.SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = kern.ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
@@ -63,7 +64,7 @@ func evalAlternate(ctx kern.ExprContext, opTerm *scan.Term) (v any, err error) {
|
||||
}
|
||||
|
||||
leftTerm := opTerm.Children[0]
|
||||
if leftTerm.Tk.Sym != scan.SymVariable {
|
||||
if leftTerm.Tk.Sym != sym.SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = kern.ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
@@ -99,7 +100,7 @@ func evalAssignDefault(ctx kern.ExprContext, opTerm *scan.Term) (v any, err erro
|
||||
}
|
||||
|
||||
leftTerm := opTerm.Children[0]
|
||||
if leftTerm.Tk.Sym != scan.SymVariable {
|
||||
if leftTerm.Tk.Sym != sym.SymVariable {
|
||||
// err = leftTerm.Errorf("left operand of %q must be a variable", self.tk.source)
|
||||
err = kern.ErrLeftOperandMustBeVariable(leftTerm, opTerm)
|
||||
return
|
||||
@@ -123,7 +124,7 @@ func evalAssignDefault(ctx kern.ExprContext, opTerm *scan.Term) (v any, err erro
|
||||
|
||||
// init
|
||||
func init() {
|
||||
scan.RegisterTermConstructor(scan.SymDoubleQuestion, newDefaultTerm)
|
||||
scan.RegisterTermConstructor(scan.SymQuestionEqual, newDefaultAssignTerm)
|
||||
scan.RegisterTermConstructor(scan.SymQuestionExclam, newAlternateTerm)
|
||||
scan.RegisterTermConstructor(sym.SymDoubleQuestion, newDefaultTerm)
|
||||
scan.RegisterTermConstructor(sym.SymQuestionEqual, newDefaultAssignTerm)
|
||||
scan.RegisterTermConstructor(sym.SymQuestionExclam, newAlternateTerm)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user