8e596d5979
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.
33 lines
786 B
Go
33 lines
786 B
Go
// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
// All rights reserved.
|
|
|
|
// term.go
|
|
package kern
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.portale-stac.it/go-pkg/expr/sym"
|
|
)
|
|
|
|
type Term interface {
|
|
fmt.Stringer
|
|
// Children() []Term
|
|
Source() string
|
|
GetChildCount() (count int)
|
|
GetChild(index int) Term
|
|
GetChildSource(index int) string
|
|
GetLeftChild() (c Term)
|
|
GetRightChild() (c Term)
|
|
Symbol() (symbol sym.Symbol)
|
|
IsSymbol(symbol sym.Symbol) bool
|
|
IsOneOf(symbols ...sym.Symbol) bool
|
|
IsAssign() bool
|
|
IsVar() bool
|
|
SetSymbol(symbol sym.Symbol)
|
|
Compute(ctx ExprContext) (result any, err error)
|
|
EvalInfix(ctx ExprContext) (leftValue, rightValue any, err error)
|
|
Errorf(template string, args ...any) (err error)
|
|
ErrIncompatibleTypes(leftValue, rightValue any) error
|
|
}
|