java - 使用 Java 遍历 Antlr 树

标签 java antlr antlr3

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

grammar SimpleCalc;

options 
{
    output=AST; 
} 

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

有人对如何以替代方式遍历树有任何想法或建议吗?

最佳答案

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

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

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

关于java - 使用 Java 遍历 Antlr 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8856342/

相关文章:

compiler-construction - 编译器 : what is the best way to fill the symbol table?

javascript - ANTLR JavaScript 目标

java - 通过 AdapterPosition 获取 RecyclerView 的 View

JavaFX 仅展开包含特定子级的 TreeView 父级

c# - 用于删除选择的 ANTLR4 语法集成复杂性

antlr - 词法分析器意外标记

ANTLR - 允许不完整的语法

java - 为什么我的 antlr lexer java 类是 "code too large"?

java - 检查一个 java.lang.reflect.Type 的对象是否可以转换为另一个的组件?

java - 为什么我在 Java 中得到 NoClassDefFoundError?