Compiler construction 有必要用ANTLR树吗?

Compiler construction 有必要用ANTLR树吗?,compiler-construction,antlr,Compiler Construction,Antlr,使用ANTLR构建编译器时使用AST的目的是什么。有必要有一个吗?什么是所谓的树人,如何使用它?有可能构建一个没有任何树的编译器吗?如果没有,是否有详细描述该主题的好教程?AST允许您将解析与其他编译器任务分离—名称绑定、类型检查、代码生成—它比纯文本更方便地呈现程序结构。当您进行绑定、类型检查或codegen时,您关心的是程序的结构,而不是程序的文本布局 对于真正简单的语言,可以在解析器操作中执行所有操作,ANTLR引用有一个例子,但对于非平凡的编程语言,AST是一个不错的选择 您不一定需要使

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

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

对于真正简单的语言,可以在解析器操作中执行所有操作,ANTLR引用有一个例子,但对于非平凡的编程语言,AST是一个不错的选择

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

如果您是Java爱好者,那么关于Eclipse中Java AST的本教程可能会很有趣:

一个重要的警告词。大多数ANTLR内容都是假设您将使用它们的AST内容(例如树语法等)而设置的。。上一次我尝试使用ANTLR时,这个小道消息的文档记录得非常糟糕,以至于花了差不多一个月的时间才有人重新调整大小,我没有用这些术语来思考。-花点时间,详细了解一下ANTLR的预期用途与yacc/bison的不同之处,这样你就能省去很多痛苦。