我使用javaparser来解析Java源文件的AST。
我想将源代码中的所有二进制子表达式作为单个节点。 这是我正在解析的源代码:
class MyClass {
public MyClass() {
double x = (4 / 10.0) + 15;
}
}
我实现了一个接受内置BinaryExp类型的Visitor,但它找到的唯一节点包含二进制表达式:
(4 / 10.0) + 15
有没有办法访问子表达式“(4 / 10.0)”? 我尝试获取完整表达式的“左操作数”,但它是Expression类型,而不是我期望的BinaryExpr。
任何帮助都将不胜感激。
答案 0 :(得分:0)
左操作数不能是实际类型Expression
,因为Expression
是一个抽象类。
binEx.getLeft() instanceof BinaryExp
来检查实际类型。如果此计算结果为true,则可以转换为BinaryExpression。EnclosedExpr
(括号)。然后二进制表达式是左节点的子节点这可能无法解决整个问题。我想你错过了将访问者应用于子节点。您必须调整visit(BinaryExpr n, A arg)
:
GenericVisitorAdaptor
,则必须致电super.visit(n,arg)
accept(this, arg)
。