Antlr树遍历使用Java

时间:2012-01-13 19:46:31

标签: java antlr antlr3

我有一个关于Antlr的问题,我正在用它构建一个简单的解析器,但我无法遍历树。我找到了许多在线教程,他们使用了Parser类的getAst();函数。有人对这个有经验么?我觉得这样做的方式因版本而异。

grammar SimpleCalc;

options 
{
    output=AST; 
} 

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

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

1 个答案:

答案 0 :(得分:3)

getAST()是来自CommonAST的方法,用于ANTLR v2.x.

ANTLR v3.x使用CommonTree代替。定义output=AST时,所有解析器规则都会返回RuleReturnScope的实例,该实例具有getTree()方法,您可以使用获取树。

另请参阅此前一个Q& A,其中显示了解析某些输入后如何获取AST:How to output the AST built using ANTLR?