compiler-construction - ANTLR树有必要吗?

标签 compiler-construction antlr

在构建编译器(使用 ANTLR)时使用 AST 的目的是什么?有必要拥有一个吗?什么是所谓的 TreeParser 以及如何使用它?是否可以构建一个没有任何树的编译器?如果没有,是否有任何详细描述该主题的好教程?

最佳答案

AST 可以让您将解析与其他编译器任务(名称绑定(bind)、类型检查、代码生成)分开——它比纯文本更方便地呈现程序的结构。当您进行绑定(bind)、类型检查或代码生成时,您关心的是结构而不是程序的文本布局。

对于非常简单的语言,可能可以在解析器操作中完成所有操作(ANTLR 引用有一个示例),但对于重要的编程语言,AST 是可行的方法。

(您不一定需要使用 ANTLR 树和树语法,在规则操作中您可以构建自己的数据结构)

如果您是一名 Java 人员,那么这篇关于 Eclipse 中的 Java AST 的教程可能会很有趣: http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html

关于compiler-construction - ANTLR树有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3242138/

相关文章:

VLIW 架构的 GCC 编译器基础架构

antlr - 将简单的 Antlr 语法转换为 Xtext

ANTLR4 处理 EOF 时挂起

c - antlr 为 c 生成 ast 并解析 ast

java - 有没有办法可以修改 ParseTree 及其附带的 TokenStream?

compiler-construction - 灵活的编译器管道定义

compiler-construction - 使 CLR/.NET 语言可调试

java - 使用 ANTLR v3 编译 Java 源代码时出现问题

c - C 编译器是否真的有一个 ascii 查找表

c# - Delegate.BeginInvoke()/EndInvoke() 实现