type Interpreter … type EvalObserver … // Observe constructs a decorator that calls all the provided observers in order after evaluating each Interpretable // or Qualifier during program evaluation. func Observe(observers ...EvalObserver) InterpretableDecorator { … } type EvalCancelledError … func (e EvalCancelledError) Error() string { … } type CancellationCause … const ContextCancelled … const CostLimitExceeded … // TrackState decorates each expression node with an observer which records the value // associated with the given expression id. EvalState must be provided to the decorator. // This decorator is not thread-safe, and the EvalState must be reset between Eval() // calls. // DEPRECATED: Please use EvalStateObserver instead. It composes gracefully with additional observers. func TrackState(state EvalState) InterpretableDecorator { … } // EvalStateObserver provides an observer which records the value // associated with the given expression id. EvalState must be provided to the observer. // This decorator is not thread-safe, and the EvalState must be reset between Eval() // calls. func EvalStateObserver(state EvalState) EvalObserver { … } // ExhaustiveEval replaces operations that short-circuit with versions that evaluate // expressions and couples this behavior with the TrackState() decorator to provide // insight into the evaluation state of the entire expression. EvalState must be // provided to the decorator. This decorator is not thread-safe, and the EvalState // must be reset between Eval() calls. func ExhaustiveEval() InterpretableDecorator { … } // InterruptableEval annotates comprehension loops with information that indicates they // should check the `#interrupted` state within a custom Activation. // // The custom activation is currently managed higher up in the stack within the 'cel' package // and should not require any custom support on behalf of callers. func InterruptableEval() InterpretableDecorator { … } // Optimize will pre-compute operations such as list and map construction and optimize // call arguments to set membership tests. The set of optimizations will increase over time. func Optimize() InterpretableDecorator { … } type RegexOptimization … // CompileRegexConstants compiles regex pattern string constants at program creation time and reports any regex pattern // compile errors. func CompileRegexConstants(regexOptimizations ...*RegexOptimization) InterpretableDecorator { … } type exprInterpreter … // NewInterpreter builds an Interpreter from a Dispatcher and TypeProvider which will be used // throughout the Eval of all Interpretable instances generated from it. func NewInterpreter(dispatcher Dispatcher, container *containers.Container, provider types.Provider, adapter types.Adapter, attrFactory AttributeFactory) Interpreter { … } // NewIntepretable implements the Interpreter interface method. func (i *exprInterpreter) NewInterpretable( checked *ast.AST, decorators ...InterpretableDecorator) (Interpretable, error) { … }