Mar*_*son 2 compiler-construction antlr
在构建编译器(使用ANTLR)时使用AST的目的是什么.有必要吗?什么是所谓的TreeParser,如何使用它?是否可以构建没有任何树的编译器?如果没有,是否有详细描述该主题的好教程?
AST允许您将解析与其他编译器任务(名称绑定,类型检查,代码生成)分开 - 它比纯文本更方便地呈现程序结构.当您进行绑定或类型检查或代码生成时,您关心的是结构而不是关于程序的文本布局.
对于非常简单的语言,可能可以在解析器操作中执行所有操作(ANTLR参考有一个示例),但对于非平凡的编程语言,AST是可行的方法.
(您不一定需要使用ANTLR树和树语法,在您可以构建的规则操作和您自己的数据结构中)
如果您是Java人员,那么关于Eclipse中Java AST的本教程可能会很有趣:http://www.eclipse.org/articles/article.php? file = Article-JavaCodeManipulation_AST/ index.html