我是LLVM的新手。我的基本需求是解析Fortran代碼。通過查看LLVM網站,LLVM似乎可以用作解析代碼的庫。那麼我可以用它來分析Fortran代碼,並提取關於代碼(AST?)的信息嗎?我可以使用LLVM分析Fortran嗎?
回答
LLVM是一個編譯器後端。它唯一知道如何解析的是LLVM IR--一種設計爲從編程語言前端發出的中間語言。 LLVM的官方前端是Clang,它可以處理C,C++和ObjC。如果您對其他語言感興趣,還有DragonEgg,這是一個gcc的LLVM插件。它使用gcc的前端和LLVM作爲後端,因此它可以解析gcc知道如何解析的任何內容。我知道正在做的工作是讓它從Ada和Fortran生成正確的代碼。下面是從頁的摘錄:
現狀
- 效果最好用gcc-4.6。
- Fortran工作得很好。 Ada,C和C++也很好。 Ada在gcc-4.7上效果不佳。
- 它可以編譯合理數量的Obj-C,Obj-C++和Go。
- 它可以編譯簡單的Java程序,但它們不能正確執行(這是java前端不支持GCC的 LTO的結果)。
- 調試信息很差。
謝謝!那麼我可以使用DragonEgg作爲圖書館嗎?就像讓它解析Fortran代碼一樣,並要求它提供符號信息。 – 2013-04-20 12:35:53
@LiDong:如果你只需要解析Fortran並獲取符號信息,也許你甚至不需要DragonEgg或LLVM。也許你只需要gcc來轉儲它的前端數據。我會四處尋找有關使用gcc做這件事的文檔。 – 2013-04-20 13:10:14
不,LLVM不是解析Fortran的庫。 LLVM是一個用於實現編譯器後端的庫。您需要自己編寫Fortran前端。
或者使用寫過Fortran前端的其他人的工作,例如http://dragonegg.llvm.org – 2013-04-20 10:17:03
添加到禮Bendersky評論,你可以在「開始代碼生成前的輸出內部解析樹」使用-fdump - 解析樹選項gfortran的。
- 1. 我可以使用谷歌分析存儲用戶ID嗎?
- 2. 我可以使用指針在Fortran中創建子數組嗎?
- 3. 我可以使用查詢獲取Firebase分析數據嗎?
- 4. 我可以使用Corona SDK進行實時音頻分析嗎?
- 5. 我可以使用New Relic進行谷歌風格分析嗎?
- 6. 我可以使用antlr解析部分數據嗎?
- 7. 我可以在vkontakte上使用谷歌分析嗎?
- 8. 我可以在這裏使用Oracle分析功能嗎?
- 9. 我可以使用OpenCV分析圖像內容嗎?
- 10. 我可以使用Unity的默認分析嗎?
- 11. 我可以使用Google Analytics(分析)跟蹤IFRAME小部件嗎?
- 12. 我可以用php解析hg19.2bit嗎?
- 13. 我們可以使用並行性來分析表的分區嗎?
- 14. 我可以用純軟件做協議(i2c)分析嗎
- 15. 我可以將Solr用於1000萬行的分析數據嗎
- 16. 我可以從服務器端調用谷歌分析嗎?
- 17. Adobe分析 - 我可以在dom上調用_satellite.pageBottom()嗎?
- 18. 我可以用Xcode 4.6.3分析iOS 7設備嗎?
- 19. 我可以使用NSPredicate嗎?
- 20. 我可以使用PayPal嗎?
- 21. 我可以使用font:monospace嗎?
- 22. 我可以將參數傳遞給我的fsyacc分析器嗎?
- 23. 我可以在谷歌分析中濾除我的流量嗎?
- 24. 我可以讓我的谷歌分析結果公開嗎?
- 25. 我可以使用php解析我的最新Facebook狀態嗎?
- 26. 可以在Xcode 4.3中使用LLVM 4.0嗎?
- 27. 可以使用LLVM字節碼作爲Z3輸入嗎?
- 28. 我可以在iOS應用中使用兩個Google Analytics(分析)ID嗎?
- 29. 我可以使用Splunk分析Rails應用程序中的事件嗎?
- 30. 我可以使用預編譯的llvm/clang構建一個Checker嗎?
LLVM與*解析無關。您可以重用f2c中的解析器或其中一種antlr Fortran語法。或者只需編寫自己的解析器,Fortran非常簡單。 – 2013-04-27 15:41:07
@ SK邏輯我已經開始使用Treetop編寫一個Fortran解析器來達到我的目的。 – 2013-04-29 01:32:40