我正在使用ANTLR v4编写DSL前端,我想加入GCC框架。目标是使用C语言AST来利用GCC框架的其余部分。
我还没有找到任何信息或预先存在的工作来使用如何继续的示例。我正在寻找的是如何将ANTLR 4 AST移动到GCC Generic / GIMBLE。
ANTLR 4不支持C语言目标,因此我必须将C ++目标整合到GCC C语言框架中。
感谢帮助
答案 0 :(得分:0)
将ANTLR的C ++实现粘贴到GCC中,以便GCC调用它可能是一个简单的步骤。 [不要期望容易;海湾合作委员会希望成为海湾合作委员会,而不是你您可以从GCC Melt获得一些帮助,这是一个与GCC机器接口的软件包。]
为任意(例如,您的自定义DSL)语言生成的AST不会轻易移动(轻松)"到C AST或GCC Gimple(不是GIMBLE)框架。
你必须在本质上构建你的DSL-AST到C-AST翻译器,或者你的DSL-AST到Gimple翻译器。没有先验的理由相信建立这样的翻译很容易;例如,你没有告诉我们你的DSL是"就像C一样,除了......"。所以,你将不得不建立一个翻译。如果没有证据证明这很简单,那么您必须将DSL概念转换为C概念。您的DSL越好("非C-like")就越难以实现。
此SO链接更详细地讨论了翻译背后的问题:What kinds of patterns could I enforce on the code to make it easier to translate to another programming language?