我正在寻找开源C ++编译器前端(源解析器/分析器)的选项,我可以根据我的要求进行自定义。我不需要后端实现,只是它有助于找到支持大多数标准功能的快速且相对无错误的C ++前端。有什么建议?
[我确实谷歌,clang似乎是一个选项,但在我开始之前我更喜欢同行反馈。]
Arpan
答案 0 :(得分:6)
Clang和GCC是两个主要选择。海湾合作委员会非常复杂(或者我听说过),而且Clang很有希望,但还不成熟。
GCC-XML使用GCC的前端吐出源的XML描述。 GCC-XML的输出是不是一个完整的抽象源代码树(不包含函数体),但它是一个更容易比GCC本身的工作。 (在GCC-XML页面上的最新版本是可怕的过时的;如果你不想惹自己跟踪其CVS身边时,你可能会尝试从,例如,Debian's gccxml page下载压缩包。)
根据您的具体要求,其他选项可能有效:
修改:如需进一步阅读,请参阅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也非常活跃地使用和开发。这段代码有相当多的里程数。