首页 > 解决方案 > 访问 MVEL ASTNode 信息

问题描述

编译一个 MVEL 表达式后,我可以访问顶部的 ASTNode。

ExpressionCompiler compiler = new ExpressionCompiler(<expression>, true);
ASTNode node = compiler.compile().getFirstNode();

但是,我想完全访问 ASTNode 信息,包括它的左右子节点。

ASTNode left = node.getLeftNode();
ASTNode right = node.getRightNode();
...

有没有办法做到这一点?

标签: mvel

解决方案


如果表达式具有二元运算符,例如 (a + b),则对应的 ASTNode 是 BineryOperation 类型。因此,可以使用以下代码来解决该问题:

ExpressionCompiler compiler = new ExpressionCompiler("a + b", true);
ASTNode node = compiler.compile().getFirstNode();
BinaryOperation biOptNode= (BinaryOperation)node;
ASTNode left = biOptNode.getLeftNode();
ASTNode right = biOptNode.getRightNode();

推荐阅读