【发布时间】:2015-04-27 00:11:06
【问题描述】:
我正在对源到源编译进行一些研究,但现在我对源到源编译有所了解。我想知道这些源到源编译器是否有任何 API 示例。
我的意思是将一种编程语言的源代码传递给另一种编译器进行编译的接口描述符?如果是的话,请你给我指出这些例子,或者你能给我一些提示(只是纯粹的解释),让我写一篇仍在研究中的文章。
哦,我应该注意我已经研究了几天,我遇到了诸如 ROSE、DMS 和 LLVM 之类的东西。如前所述,它纯粹是研究,所以我不知道我知道我不会使用 ROSE 的最佳方法是什么,因为它仅适用于 C/C++。 LLVMs 似乎很有希望,但我是 LLVM 的新手。哦,我的目标是为 4 种语言支持创建一个转译器(这可行吗)。这就是为什么我只需要专家建议:)
【问题讨论】:
-
听起来您需要先学习编译器构造 101。你肯定找不到它的 API。您首先需要的是源语言和目标语言的语法。这方面有商业产品。不是一件容易的事。
-
所以真的我要使用一些在线课程谢谢@EJP
-
LLVM 不会进行源到源的翻译;它旨在编译为二进制指令集。 Clang 似乎已从一些源代码更改中使用,尽管不是跨语言 AFAIK。如果您将自己限制在构建 AST、遍历 AST 和吐出代码(纯语法定向翻译),尽管您必须编写自己的解析器,但您也许可以使用 Clang。但是你不需要 Clang 来做这个;您所需要的只是来自解析器的 AST。
-
@EJP:是的,实际上,您可以找到这样的 API。 DMS 提供其中之一作为其众多方面之一。
标签: api compiler-construction code-translation