用于自动移植的工具和可以编译成其他语言的语言

时间:2011-06-02 13:58:04

标签: metaprogramming

我只是出于好奇而问这个:

  • 是否有任何工具可以自动将合理复杂度的源代码从一种语言转换为另一种语言?
  • 是否有可以编译成其他几种语言的“元语言”?例如,CoffeeScript编译成Javascript。

如果您了解任何开源示例,那就太棒了!

感谢您的时间。

PS:不知道如何标记这个。随意编辑。

2 个答案:

答案 0 :(得分:1)

您可以使用f2c工具将Fortran代码转换为C.

对于python,您可以使用shedskin将该语言的子集转换为C ++。

vala语言在实际编译之前转换为C.

答案 1 :(得分:1)

GCC将复杂的C ++代码转换为机器代码,因此从技术上讲,它是您问题的答案。事实上,有很多像这样的编译器,但我不认为这些是你想要的。

有些工具硬连线只将一种语言翻译为另一种语言作为源代码(另一张海报建议使用“f2C”,这是一个完美的例子)。这些就像编译器......但很少见。

几乎没有任何工具可以从一种语言映射到许多其他语言,开箱即用。问题是语言具有不同的执行模型,数据类型和执行方案,这样的翻译者必须在目标语言中正确地模拟。 声称要执行此操作的是“代码生成器”,但它们主要是恕我直言的相当简单的函数规范,这些函数可以简单地转换为目标语言中的简单代码。

如果您想以某种通用方式将一种语言翻译成另一种语言,则需要一个程序转换系统,例如,一个可以解析任意语言的系统,并且您可以为其提供映射到其他语言的翻译规则。一种直截了当的方式。

我们的DMS Software Reengineering Toolkit就是其中之一。这个SO What kinds of patterns could I enforce on the code to make it easier to translate to another programming language?更详细地讨论了这些问题。