Java 如何使用JDT-AST提取已知行中的条件?

Java 如何使用JDT-AST提取已知行中的条件?,java,abstract-syntax-tree,eclipse-jdt,Java,Abstract Syntax Tree,Eclipse Jdt,我有这样一种方法: public static int calc(int a, int b) { if (a >= b) return a - b; return 0; } 我想知道已知行号上使用的条件。在本例中,我的预期结果是条件的名称,类似于“>=” 我知道如何解析给定的ICompilationUnit的编译单元。但是我如何获得条件呢?为此,您必须创建一个ASTVisitor,它将访问所有中缀表达式。在visitor类中,访问方

我有这样一种方法:

public static int calc(int a, int b) {
        if (a >= b)
            return a - b;
        return 0;
}
我想知道已知行号上使用的条件。在本例中,我的预期结果是条件的名称,类似于“>=”


我知道如何解析给定的
ICompilationUnit
编译单元。但是我如何获得条件呢?

为此,您必须创建一个ASTVisitor,它将访问所有中缀表达式。在visitor类中,访问方法将具有以下内容:

@Override
public boolean visit(InfixExpression node) {
    Operator op= node.getOperator();
    if(op.equals(Operator.GREATER) || op.equals(Operator.EQUALS) || ....)
        conditionalInfixExpressionList.add(node);
    return super.visit(node);
}

visit
方法内部的if语句中,您必须检查中缀表达式是否为条件变量,并相应地将其添加到列表中。

为此,您必须创建一个ASTVisitor,它将访问所有中缀表达式。在visitor类中,访问方法将具有以下内容:

@Override
public boolean visit(InfixExpression node) {
    Operator op= node.getOperator();
    if(op.equals(Operator.GREATER) || op.equals(Operator.EQUALS) || ....)
        conditionalInfixExpressionList.add(node);
    return super.visit(node);
}
visit
方法内部的if语句中,必须检查中缀表达式是否是条件变量,并相应地将其添加到列表中