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