12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*
- * ECAL
- *
- * Copyright 2020 Matthias Ladkau. All rights reserved.
- *
- * This Source Code Form is subject to the terms of the MIT
- * License, If a copy of the MIT License was not distributed with this
- * file, You can obtain one at https://opensource.org/licenses/MIT.
- */
- package parser
- /*
- RuntimeProvider provides runtime components for a parse tree.
- */
- type RuntimeProvider interface {
- /*
- Runtime returns a runtime component for a given ASTNode.
- */
- Runtime(node *ASTNode) Runtime
- }
- /*
- Runtime provides the runtime for an ASTNode.
- */
- type Runtime interface {
- /*
- Validate this runtime component and all its child components.
- */
- Validate() error
- /*
- Eval evaluate this runtime component. It gets passed the current variable
- scope and the instance state.
- The instance state is created per execution instance and can be used
- for generator functions to store their current state.
- */
- Eval(Scope, map[string]interface{}) (interface{}, error)
- }
- /*
- Scope models an environment which stores data.
- */
- type Scope interface {
- /*
- NewChild creates a new child scope.
- */
- NewChild(name string) Scope
- /*
- Parent returns the parent scope or nil.
- */
- Parent() Scope
- /*
- SetValue sets a new value for a variable.
- */
- SetValue(varName string, varValue interface{}) error
- /*
- GetValue gets the current value of a variable.
- */
- GetValue(varName string) (interface{}, bool, error)
- /*
- String returns a string representation of this scope.
- */
- String() string
- }
|