C ++开源前端的选项

时间:2010-06-11 18:13:52

标签: c++ compiler-construction

我正在寻找开源C ++编译器前端(源解析器/分析器)的选项,我可以根据我的要求进行自定义。我不需要后端实现,只是它有助于找到支持大多数标准功能的快速且相对无错误的C ++前端。有什么建议?

[我确实谷歌,clang似乎是一个选项,但在我开始之前我更喜欢同行反馈。]

Arpan

5 个答案:

答案 0 :(得分:6)

Clang和GCC是两个主要选择。海湾合作委员会非常复杂(或者我听说过),而且Clang很有希望,但还不成熟。

GCC-XML使用GCC的前端吐出源的XML描述。 GCC-XML的输出是不是一个完整的抽象源代码树(不包含函数体),但它是一个更容易比GCC本身的工作。 (在GCC-XML页面上的最新版本是可怕的过时的;如果你不想惹自己跟踪其CVS身边时,你可能会尝试从,例如,Debian's gccxml page下载压缩包。)

根据您的具体要求,其他选项可能有效:

  • CINT是一个C / C ++解释器。我被告知它遵守C ++标准并不是很严格。
  • ROSE可以使用C和C ++源代码,并允许您对其进行各种转换。 ROSE的C和C ++前端从EDG许可的,所以它不是开源的,但它是可自由配置。
  • DoxygenSWIG等项目包含自己有限的C ++解析器。虽然这些仅用于提取文档和生成接口,但它们可能满足您的需求。

修改:如需进一步阅读,请参阅Andrew {{p>来自"Parsing C++"

答案 1 :(得分:1)

你看过LLVM clang了吗?

答案 2 :(得分:1)

对于我所做的重构工作之一,我们使用了Elsa:

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

结果好坏参半。我们的代码的某些部分对于Elsa来说太复杂或不标准,并且必须对其进行预处理才能进行重构。

您可以在Oink中使用它:

http://danielwilkerson.com/oink/

如果源分析是您的心情。

希望这有帮助!

答案 3 :(得分:1)

Digital Mars C ++编译器不是开源的,但可以购买源代码(参见http://www.digitalmars.com/shop.html),您可以对其进行自定义。

答案 4 :(得分:0)

CLang可能是最近寻找全面解决方案的方法,但如果您正在寻找可以理解的独立内容,请在github上查看这个项目:

https://github.com/robertoraggi/cplusplus

开箱即用它附带一个小命令行实用程序来转储AST,符号和IR代码。

这是QTCreator中使用的C ++前端。它在解析大多数现代C ++代码方面做得不错,即使cplusplus前端还没有更新一段时间,QTCreator也非常活跃地使用和开发。这段代码有相当多的里程数。