我有一个关于Antlr的问题,我正在用它构建一个简单的解析器,但我无法遍历树。我找到了许多在线教程,他们使用了Parser类的getAst();
函数。有人对这个有经验么?我觉得这样做的方式因版本而异。
grammar SimpleCalc;
options
{
output=AST;
}
tokens {
PLUS = '+' ;
MINUS = '-' ;
MULT = '*' ;
DIV = '/' ;
SEMICOLON = ';';
EQUAL = '=';
COMMA = ',';
BRACKETL = '(';
BRACKETR = ')';
}
任何人都有任何想法或建议如何以另一种方式遍历树?
答案 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?