我正在编写一个Eclipse ASTVisitor。如何判断一个字段在一个方法中是读还是写?
提供的想法是“您需要查看赋值节点。LHS上的字段是写入的,而RHS表达式上的字段是读取的。”
访问赋值并获得表达式的LHS和RHS后,如何判断表达式是否包含该字段?
发布于 2009-10-18 05:05:31
如果你在做AST工作,我建议你使用AST View plugin。对于理解JDT AST,它是一个非常方便的工具。
你的方法将会奏效。我在访问器中使用一个变量来表示我正在执行一个赋值操作。
public boolean visit(final Assignment node) {
inVariableAssignment = true;
node.getLeftHandSide().accept(this);
inVariableAssignment = false;
node.getRightHandSide().accept(this);
return false;
}现在,当访问SimpleName或QualifiedName时,我会这样做:
public boolean visit(final SimpleName node) {
if (!node.isDeclaration()) {
final IBinding nodeBinding = node.resolveBinding();
if (nodeBinding instanceof IVariableBinding) {
...
}
}
return false;
}省略号(...)将被替换为根据inVariableAssignment的值处理字段访问的代码。这将帮助您开始。
别忘了PostfixExpression和PrefixExpression..。
https://stackoverflow.com/questions/1583850
复制相似问题