最近做program analysis,需要解析Java的源代码,于是就去看了看Abstract Syntax Tree(AST,中文为抽象语法树)。有点无奈的是,网上关于这方面的资料比我想象中的少,可能是涉及的东西太底层了吧。AST一般属于编译原理方面的内容,也经常用于程序分析等等。简单来说,你写了一坨代码,编译器会把代码转化成一棵抽象语法树用于“理解”。每个树节点代表一个代码元素,也有自己的属性什么的。关于AST的细节一两句话肯定说不清楚, 不过好消息是,Eclipse JDT中有现成的ASTParser可以将源代码解析成AST,并且有很全面的节点类型和方法供用户操作。
今天就先把网上一些关于Eclipse JDT中AST相关的资料汇总再这里,等我自己摸索的差不多了会及时更新这方面的内容。
那啥,转载请注明出处哦~~~ http://blog.csdn.net/flying881114/archive/2011/02/16/6187061.aspx
---入门文档
1. Eclipse Corner Article: Abstract Syntax Tree
http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html
(英文,AST的概述,细节代码不多)
2. 探索Eclipse的ASTParser
http://www.ibm.com/developerworks/cn/opensource/os-ast/index.html#resources
(中文,相对详细的讲解和代码)
---AST使用
1. Eclipse JDT--AST and JavaModel Tutorial
http://www.vogella.de/articles/EclipseJDT/article.html
(英文,代码很多,但需要有更多的背景知识)
2. Eclipse AST 使用指南
http://wenku.baidu.com/view/a0b8e07931b765ce050814ac.html
(pdf文档,更加详细地说明了AST 相关类与方法,可以与eclipse documentation结合使用)
3. Eclipse documentation
http://help.eclipse.org/helios/index.jsp
其实,最靠谱的还是直接看eclipse文档。在这里你可以了解你想知道的一切。
4. Yet another AST tutorial
http://sahits.ch/blog/?p=228
英文,有大量代码,从易到难讲解(这篇我还没看完~)
---使用AST相关
1. 使用AST出现问题?不知道使用什么jar包?看看这里吧:
http://lym6520.javaeye.com/blog/747840
2. 想亲眼看看你源文件的AST是什么样的?为你的Eclipse装一个ASTview插件吧!
http://www.eclipse.org/jdt/ui/astview/index.php
(小心!就连Hello World的小程序也有很复杂的AST哦!)