7

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

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

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

4

4 回答 4

11

将一种语言翻译成另一种语言只是称为编译器、解释器和翻译器的程序类的一个特例。

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

该符号输出流可以是:

  • 本机汇编代码,通常用于机器运行的操作系统和硬件。如果是这样,则该程序称为编译器;
  • 不同操作系统和/或硬件的本机汇编代码。这也可以称为编译器,但通常称为交叉编译器;
  • 可以由某种虚拟机执行的中间形式。这不是一个真正的编译器,但通常被称为编译器。Java、C#、F#、VB.NET 等“编译器”都属于这一类;
  • 完全换成另一种语言。这称为翻译器,有一些例子,比如 Java 到 C# 的翻译器。它们通常有不同程度的成功,因为习语通常不容易翻译。
  • 解释器遵循相同的原则,但通常在原地执行处理后的表单,而不是将其保存在某处。Perl、PHP 和 shell 脚本都属于这一类。例如,PHP 会将操作码作为中间形式存储在操作码缓存中(如果启用了操作码缓存),但不会存储此中间形式,因此将 PHP 称为解释器仍然是安全的。
于 2010-01-13T08:02:59.693 回答
5

当你的习语翻译不好时,问题就来了,无论是从还是到。你得到的代码在语法上是有效的,但看起来它是由 acid 上的某个人编写的。

于 2010-01-13T07:56:56.780 回答
2

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

于 2010-01-13T08:03:25.120 回答
1

这可能不是您所追求的,但有 SWIG http://en.wikipedia.org/wiki/SWIG

我们在我们的一个项目中使用它来为 C++ 框架创建 python、java 和 ruby​​ 绑定/包装器。在http://marsyas.sness.net上查看它的实际应用

于 2010-01-13T07:58:36.207 回答