将一种语言翻译成另一种

时间:2010-01-13 07:54:12

标签: language-agnostic programming-languages code-translation

是否可以使用口译员将一种语言翻译成另一种语言?

听说quercus可以将php翻译成java吗?起初,我认为这是一个廉价糟糕的解决方案,可能会导致代码错误,但似乎完全有可能这样做。

你能将php翻译成其他语言,比如python或ruby吗? c ++到java等等?

4 个答案:

答案 0 :(得分:11)

将一种语言翻译成另一种语言只是一类称为编译器,翻译和翻译程序的特殊情况。

这类程序将采用输入符号流(“源代码”),通常可以通过形式语法描述,并输出符号流。

符号的输出流可以是:

  • 本机汇编代码,通常用于运行机器的操作系统和硬件。如果是,则该程序称为编译器;
  • 不同操作系统和/或硬件的本机汇编代码。这也可以称为编译器,但通常称为交叉编译器;
  • 到可以由某种虚拟机执行的中间形式。这不是一个真正的编译器,但无论如何通常称为编译器。 Java,C#,F#,VB.NET等“编译器”都属于这一类;
  • 完全是另一种语言。这被称为翻译器,例如,Java到C#翻译器的例子。它们通常具有不同程度的成功,因为成语通常不易翻译;
  • 口译员遵循相同的原则,但通常就地执行处理过的表格,而不是将其保存在某个地方。 Perl,PHP和shell脚本都属于这一类。例如,PHP将操作码作为中间形式存储在操作码缓存中(如果启用了编码缓存),但不存储此中间形式,因此将PHP称为解释器仍然是安全的。

答案 1 :(得分:5)

当你的习语不能很好地翻译时,问题就出现了。你得到的语法在语法上是有效的,但看起来它是由某人写的。

答案 2 :(得分:2)

搜索SO以获取“transpiler”以获取一些指示:https://stackoverflow.com/search?q=transpiler

答案 3 :(得分:1)

这可能不是你想要的,但有SWIG http://en.wikipedia.org/wiki/SWIG

我们在其中一个项目中使用它来为C ++框架创建python,java和ruby绑定/包装器。请参阅http://marsyas.sness.net

中的实际操作