Eclipse JDT ASTVisitor - 如何判断是否在方法中读取或写入字段?

时间:2009-10-18 02:44:01

标签: java eclipse eclipse-jdt abstract-syntax-tree visitor

我正在编写一个Eclipse ASTVisitor。如何判断是否在方法中读取或写入字段?

提供的想法是“你需要访问Assignment节点。编写LHS上的字段,同时读取RHS表达式上的字段。”

在我访问作业并获得两个都是表达式的LHS和RHS之后,如何判断表达式是否包含该字段?

1 个答案:

答案 0 :(得分:0)

如果您正在进行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;
}

现在,在访问SimpleNameQualifiedName时,我会执行以下操作:

    public boolean visit(final SimpleName node) {
    if (!node.isDeclaration()) {
        final IBinding nodeBinding = node.resolveBinding();
        if (nodeBinding instanceof IVariableBinding) {
            ...
        }
    }
    return false;
}

省略号(...)将替换为根据inVariableAssignment的值处理字段访问的代码。这将帮助您入门。

哦,别忘了PostfixExpressionPrefixExpression ...