如何使用ANTLR java语法遍历IF条件中的每个条件

时间:2017-08-23 15:14:44

标签: java antlr antlr4

我正在构建一个Java语言解析工具,我想捕获if和else-if的所有条件表达式。

所以,我写了listen并覆盖了enterStatement()。

public void enterStatement(@NotNull apexParser.StatementContext ctx) {
    if( ctx.IF() != null ) {
        // System.out.println(ctx.IF().getSourceInterval());

        TokenStream tokens = parser.getTokenStream();
        System.out.println(tokens.getText(ctx.IF().getSourceInterval()));
        System.out.println(parser.getTokenStream().getText(ctx));

        //System.out.println(ctx.IF().getText());
        //System.out.println(ctx.toStringTree(parser));
        //System.out.println(ctx.IF().getSymbol().getText());
    }
} 

我不确定如何遍历此处使用的每个条件。

实施例: if(a> 1&& b< 0)

只想知道如何遍历条件树。

注意:我是ANTLR工具的新手,如果需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

非常感谢您的跟进,我使用的是Java语法文件。

最后,我能够找到使用以下代码遍历各个节点的解决方案。

{{1}}

只需在此处发布,以便可以帮助其他人。

注意:我知道我的代码没有经过优化,这只是一个进一步的提示。