mvel - 访问 MVEL ASTNode 信息
问题描述
编译一个 MVEL 表达式后,我可以访问顶部的 ASTNode。
ExpressionCompiler compiler = new ExpressionCompiler(<expression>, true);
ASTNode node = compiler.compile().getFirstNode();
但是,我想完全访问 ASTNode 信息,包括它的左右子节点。
ASTNode left = node.getLeftNode();
ASTNode right = node.getRightNode();
...
有没有办法做到这一点?
解决方案
如果表达式具有二元运算符,例如 (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();
推荐阅读
- javascript - Google Text-toSpeech - 在前端获取音频文件
- git - 连接到远程ssh时如何启用vs终端git命令自动完成?
- javascript - 通过chrome扩展使用inject_script替换chrome的WebAPI函数
- java - 更改 GridLayout 元素的宽度
- javascript - 如何在 Swift 游乐场中运行 Intl.NumberFormat Javascript?
- node.js - 如何在请求有效负载中隐藏用户表单数据
- math - 是否可以使用贪心解决方案来解决调度问题以最小化 TOTAL 迟到?如何解决?
- javascript - 我应该如何在 django 模板中使用 onsubmit 事件?
- android-fragments - 我如何从片段中打开片段(kotlin)
- python - 如何删除 python pkg_resources 入口点?