簡體   English   中英

C ++開源前端的選項

[英]Options for open source front end for C++

我正在尋找開源C ++編譯器前端(源解析器/分析器)的選項,我可以根據我的要求進行自定義。 我不需要后端實現,只是它有助於找到支持大多數標准功能的快速且相對無錯誤的C ++前端。 有什么建議么?

[我確實谷歌,clang似乎是一個選項,但在我開始之前我更喜歡同行反饋。]

Arpan

Clang和GCC是兩個主要選擇。 海灣合作委員會非常復雜(或者我聽說過),而且Clang非常有前途,但還不成熟。

GCC-XML使用GCC的前端來吐出源的XML描述。 GCC-XML的輸出不是一個完整的抽象源樹(它不包含函數體),但它比GCC本身更容易使用。 (GCC-XML頁面上的最新版本已經過時了;如果您不想自己跟蹤其CVS,可以嘗試從Debian的gccxml頁面下載tarball。)

根據您的具體要求,其他選項可能有效:

  • CINT是一個C / C ++解釋器。 我被告知它遵守C ++標准並不是很嚴格。
  • ROSE可以使用C和C ++源代碼,並允許您對其進行各種轉換。 ROSE的C和C ++前端是從EDG獲得許可的,因此它不是開源的,但可以自由再發行。
  • DoxygenSWIG這樣的項目包括他們自己有限的C ++解析器。 雖然這些僅用於提取文檔和生成接口,但它們可能滿足您的需求。

編輯:有關進一步閱讀,請參閱Andrew Birkett撰寫的“解析C ++”

你看過LLVM鏗鏘嗎?

對於我所做的重構工作之一,我們使用了Elsa:

http://scottmcpeak.com/elkhound/sources/elsa/

結果喜憂參半。 我們的代碼的某些部分對於Elsa來說太復雜或不標准,並且必須對其進行預處理才能進行重構。

您可以在Oink中使用它:

http://danielwilkerson.com/oink/

如果來源分析是你心情愉快。

希望這可以幫助!

Digital Mars C ++編譯器不是開源的,但源代碼可以購買(參見http://www.digitalmars.com/shop.html ),您可以自定義它。

CLang可能是最近尋求全面解決方案的方法,但如果您正在尋找可以理解的獨立內容,那么請在github上查看這個項目:

https://github.com/robertoraggi/cplusplus

開箱即用它帶有一個小命令行實用程序來轉儲AST,符號和IR代碼。

這是QTCreator中使用的C ++前端。 它在解析大多數現代C ++代碼方面做得不錯,即使cplusplus前端還沒有更新一段時間,QTCreator也非常活躍地使用和開發。 這段代碼有相當多的里程數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM