[英]How to get binary subexpressions with javaparser
我正在使用javaparser解析Java源文件的AST。
我想将源代码中的所有二进制子表达式作为单个节点获取。 这是我正在解析的源代码:
class MyClass {
public MyClass() {
double x = (4 / 10.0) + 15;
}
}
我实现了一个Visitor,该Visitor接受内置的BinaryExp类型,但是它找到的唯一节点包含二进制表达式:
(4 / 10.0) + 15
有没有办法访问子表达式“(4 / 10.0)”? 我尝试获取完整表达式的“左操作数”,但是它的类型为Expression,而不是我期望的BinaryExpr。
任何帮助,将不胜感激。
左操作数不能为Expression
的实际类型,因为Expression
是抽象类。
binEx.getLeft() instanceof BinaryExp
检查实际类型。如果该值为true,则可以binEx.getLeft() instanceof BinaryExp
为BinaryExpression。 EnclosedExpr
(括号)。 那么二进制表达式是左节点的子代 这可能无法解决整个问题。 我认为您错过了将访问者应用于子节点。 您必须调整visit(BinaryExpr n, A arg)
:
GenericVisitorAdaptor
,则必须调用super.visit(n,arg)
accept(this, arg)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.