2012-01-13 63 views
2

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

grammar SimpleCalc; 

options 
{ 
    output=AST; 
} 

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

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

回答

3

getAST()是在ANTLR v2.x中使用的从CommonAST开始的方法。

ANTLR v3.x改为使用CommonTree。在定义output=AST时,所有解析器规则都返回RuleReturnScope的实例,该实例有一个getTree()方法,您可以使用get the tree。

也看到这之前常见&一个显示如何解析一些输入后AST的弄个:How to output the AST built using ANTLR?

+0

太好了!谢谢,当你知道Antlr是如何构建的时候,非常容易。 – 2012-01-15 16:14:01

+0

不客气@FokkoDriesprong。 – 2012-01-15 19:09:31