使用Java进行Antlr树遍历

3

我有一个关于Antlr的问题,我正在使用它构建一个简单的解析器,但无法遍历树。我找到了许多在线教程,它们使用解析器类的getAst();函数。有没有人对此有经验?我感觉这种方法在不同版本之间可能会有所不同。

grammar SimpleCalc;

options 
{
    output=AST; 
} 

tokens {
    PLUS    = '+' ;
    MINUS   = '-' ;
    MULT    = '*' ;
    DIV = '/' ;
    SEMICOLON = ';';
    EQUAL = '=';
    COMMA = ',';
    BRACKETL = '(';
    BRACKETR = ')';
}

有人对如何以另一种方式遍历树有任何想法或建议吗?

1个回答

3

getAST()是ANTLR v2.x中使用的CommonAST类中的一个方法。

ANTLR v3.x改用CommonTree。当定义output=AST时,所有解析器规则都会返回RuleReturnScope的实例,该实例具有可用于获取树形结构的getTree()方法。

还请参阅之前的问答,该问答显示了如何在解析输入后获得AST:How to output the AST built using ANTLR?


太好了!谢谢,其实当你知道Antlr的结构时,它相当容易。 - Fokko Driesprong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接