我一直試圖從Clang獲得ASTs,但迄今爲止我還沒有成功。我發現了一歲question在這裏堆棧提到約兩其他方式獲得使用鏘這是AST:如何使用Clang獲取當前版本的AST?
./llvmc -cc1 -ast突降file.c
./llvmc -cc1 -ast打印file.c
在此question的doxygen被提及和representation其中的AST給出,但我主要是想找一個一些文字形式,如XML,這樣可以進行進一步的分析。
最後還有另一個question在這裏堆棧關於確切的XML導入,但由於幾個原因也提到了它已經停產。
因此,我的問題是,哪個版本以及如何從控制檯使用它來獲取C中給定代碼的ast相關信息?我相信這是一個非常無痛的單行命令代碼,就像上面的那些命令代碼一樣,但是文檔索引沒有提及任何關於ast的東西,就像我讀過的那樣,而且我發現的唯一一個是關於用手寫AST的是不是真的我在找什麼。
我嘗試了上述所有命令,但它們都已在2.9版本上失敗,並且我已經發現llvm在每個版本之間會發生很大變化。
謝謝。
Doxygen AFAIK不會產生任何類似AST的東西。 –
您提到的其他答案是說,從Clang中刪除了XML導出格式。恕我直言,這是一件好事,因爲任何規模的C程序的真正的XML樹都將是非常可怕的,而且XML操作起來很尷尬;您想使用工具中內置的工具來訪問AST。 –
... Clang是你會考慮的唯一工具嗎? –