30 lines
889 B
Go
30 lines
889 B
Go
// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
// All rights reserved.
|
|
|
|
// expr-context.go
|
|
package expr
|
|
|
|
// ----Expression Context
|
|
type ExprContext interface {
|
|
Clone() ExprContext
|
|
SetParent(ctx ExprContext)
|
|
GetParent() (ctx ExprContext)
|
|
GetVar(varName string) (value any, exists bool)
|
|
GetLast() any
|
|
SetVar(varName string, value any)
|
|
UnsafeSetVar(varName string, value any)
|
|
|
|
EnumVars(func(name string) (accept bool)) (varNames []string)
|
|
VarCount() int
|
|
DeleteVar(varName string)
|
|
|
|
EnumFuncs(func(name string) (accept bool)) (funcNames []string)
|
|
FuncCount() int
|
|
DeleteFunc(funcName string)
|
|
|
|
GetFuncInfo(name string) (item ExprFunc, exists bool)
|
|
Call(name string, args map[string]any) (result any, err error)
|
|
RegisterFuncInfo(info ExprFunc)
|
|
RegisterFunc(name string, f Functor, returnType string, param []ExprFuncParam) (funcInfo ExprFunc, err error)
|
|
}
|