【问题标题】:Antlr Tree traversing using Java使用 Java 遍历 Antlr 树
【发布时间】:2012-01-13 19:46:30
【问题描述】:

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

grammar SimpleCalc;

options 
{
    output=AST; 
} 

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

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

【问题讨论】:

    标签: java antlr antlr3


    【解决方案1】:

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

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

    另请参阅之前的问答,它显示了在解析一些输入后如何获取 AST:How to output the AST built using ANTLR?

    【讨论】:

    • 太棒了!谢谢,当您知道 Antlr 的结构时,非常容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多