Class AstEvaluator
java.lang.Object
cloud.opencode.base.expression.eval.AstEvaluator
- All Implemented Interfaces:
Evaluator
AST Evaluator
AST 求值器
The default evaluator that traverses and evaluates AST nodes. Uses the visitor pattern to evaluate different node types.
默认求值器,遍历和求值 AST 节点。使用访问者模式来求值不同的节点类型。
Features | 主要功能:
- Evaluate single nodes or node lists - 求值单个节点或节点列表
- Typed evaluation: boolean, number, string - 类型化求值: 布尔值、数字、字符串
- Timeout-based evaluation - 基于超时的求值
- Singleton and instance-based usage - 单例和基于实例的使用
Usage Examples | 使用示例:
AstEvaluator evaluator = AstEvaluator.getInstance();
Node ast = Parser.parse("x + y");
Object result = evaluator.evaluate(ast, ctx);
// Typed evaluation
boolean flag = evaluator.evaluateAsBoolean(conditionNode, ctx);
Number num = evaluator.evaluateAsNumber(calcNode, ctx);
Security | 安全性:
- Thread-safe: Yes, stateless singleton - 线程安全: 是,无状态单例
- Null-safe: Yes, null node returns null - 空值安全: 是,null节点返回null
Performance | 性能特性:
- Time complexity: O(n) for evaluate where n is the number of AST nodes - 时间复杂度: evaluate 为 O(n),n为 AST 节点数量
- Space complexity: O(d) call stack where d is the expression nesting depth - 空间复杂度: O(d) 调用栈,d为表达式嵌套深度
- Since:
- JDK 25, opencode-base-expression V1.0.0
- Author:
- Leon Soo www.LeonSoo.com
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Objecteval(Node node, EvaluationContext context) Static method to evaluate expression 静态方法求值表达式evaluate(Node node, EvaluationContext context) Evaluate an AST node 求值 AST 节点evaluateAll(List<Node> nodes, EvaluationContext context) Evaluate a list of nodes 求值节点列表booleanevaluateAsBoolean(Node node, EvaluationContext context) Evaluate node and expect boolean result 求值节点并期望布尔结果evaluateAsNumber(Node node, EvaluationContext context) Evaluate node and expect number result 求值节点并期望数字结果evaluateAsString(Node node, EvaluationContext context) Evaluate node and expect string result 求值节点并期望字符串结果evaluateWithTimeout(Node node, EvaluationContext context, long timeoutMs) static AstEvaluatorGet the singleton instance 获取单例实例static longReturns the running count of virtual threads that timed out underevaluateWithTimeout(Node, EvaluationContext, long)and could not be confirmed terminated.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Evaluator
canEvaluate, evaluate
-
Constructor Details
-
AstEvaluator
public AstEvaluator()Create a new AstEvaluator 创建新的 AstEvaluator
-
-
Method Details
-
getInstance
Get the singleton instance 获取单例实例- Returns:
- the instance | 实例
-
evaluate
Description copied from interface:EvaluatorEvaluate an AST node 求值 AST 节点 -
evaluateAll
Evaluate a list of nodes 求值节点列表- Parameters:
nodes- the nodes | 节点列表context- the context | 上下文- Returns:
- the results | 结果列表
-
evaluateAsBoolean
Evaluate node and expect boolean result 求值节点并期望布尔结果- Parameters:
node- the node | 节点context- the context | 上下文- Returns:
- the boolean result | 布尔结果
-
evaluateAsNumber
Evaluate node and expect number result 求值节点并期望数字结果- Parameters:
node- the node | 节点context- the context | 上下文- Returns:
- the number result | 数字结果
-
evaluateAsString
Evaluate node and expect string result 求值节点并期望字符串结果- Parameters:
node- the node | 节点context- the context | 上下文- Returns:
- the string result | 字符串结果
-
getRunawayTimeoutCount
public static long getRunawayTimeoutCount()Returns the running count of virtual threads that timed out underevaluateWithTimeout(Node, EvaluationContext, long)and could not be confirmed terminated. Decrements when a runaway task eventually does complete. Useful as a metric source for ops dashboards. 返回evaluateWithTimeout(Node, EvaluationContext, long)下超时但未确认终止的虚拟线程总数。失控任务最终完成时 自减。可作运维仪表盘的指标来源。- Returns:
- current count of runaway timeout-cancelled tasks | 当前失控的超时任务计数
- Since:
- opencode-base-expression V1.0.4
-
evaluateWithTimeout
-
eval
Static method to evaluate expression 静态方法求值表达式- Parameters:
node- the node | 节点context- the context | 上下文- Returns:
- the result | 结果
-