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

标签 java abstract-syntax-tree eclipse-jdt

我有一个这样的方法:

public static int calc(int a, int b) {
        if (a >= b)
            return a - b;
        return 0;
}

我想知道在已知行号上使用的条件。在本例中,我的预期结果是条件的名称,例如“">=”。

我知道如何解析给定 ICompilationUnitCompilationUnit。但我怎样才能获得条件呢?

最佳答案

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

@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 语句中,您必须检查中缀表达式是否是条件变量,并将其添加到列表中。

关于java - 如何使用 JDT-AST 提取已知行中的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797552/

相关文章:

从表达式转换为图形 (DAG) 表示的算法

java - 如何在 Jetty 9.2.24 HttpClient 中添加线程池?

java - 角速度和计算问题

javascript - JS : rename variables for refactor (using an AST, 不是文本)

java - 更改 TypeDeclaration 时 Eclipse AST 不更改类文件

eclipse - 告诉 Eclipse 仅自动完成方法名称?

java - org/eclipse/jdt/internal/compiler 包的用途是什么?

java - 在握手完成之前阻止 SSLSocket?

java - 如何从 JavaFX 11 项目构建真正的桌面可执行应用程序?

pretty-print - 如何在一般遍历解析树时访问 ANTLR4 中的备用标签?