最近做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哦。)