переводить с одного языка на другой?

можно ли перевести один язык на другой с помощью переводчика?

слышал, что quercus может перевести php на java? сначала я думал, что это дешевое паршивое решение, которое может дать ошибки кода, но кажется, что это вполне возможно.

не могли бы Вы перевести php на другие языки, такие как python или ruby? c++ на java и так далее?

4 ответов


перевод одного языка на другой-это особый случай для класса программ, называемых компиляторами, переводчиками и переводчиками.

этот класс программы будет принимать поток входных символов ("исходный код"), которые могут обычно описывается формальной грамматикой и выводит поток символов.

Что выходной поток символов может быть:

  • машинный код сборки, обычно для операционной системы и аппаратуру бежит дальше. Если это так, то программа называется компилятор;
  • собственный код сборки для другой ОС и / или оборудования. Это также можно назвать компилятором, но часто упоминается как кросс-компилятор;
  • к промежуточной форме, которая может быть выполнена какой-либо виртуальной машиной. Это не настоящий компилятор, но его часто называют компилятором. Java, C#, F#, VB.NET, etc "компиляторы" все попадают в эту категорию;
  • на совершенно другой язык. Это называется переводчиком, и есть примеры, скажем, переводчиков Java на C#. Они обычно имеют различную степень успеха, потому что идиомы часто не легко переводимы;
  • интерпретаторы следуют тому же принципу, но обычно выполняют обработанную форму на месте, а не сохраняют ее где-то. Perl, PHP и shell скрипты все попадают в эту категорию. Например, PHP хранит опкоды в кэш опкодов как промежуточная форма (если кэширование opcoding включен), но это промежуточная форма не сохраняется, поэтому по-прежнему безопасно называть PHP интерпретатором.

проблема возникает, когда у вас есть идиомы, которые не переводятся хорошо, либо от или до. Вы получаете синтаксически допустимый код, но похоже, что он был написан кем-то на acid.


поиск так для "транспилера" для некоторых указателей:https://stackoverflow.com/search?q=transpiler


Это может быть не то, что вы после, но есть глоток http://en.wikipedia.org/wiki/SWIG

мы использовали его в одном из наших проектов для создания Привязок / оболочек python, java и ruby для платформы c++. Увидеть его в действии на http://marsyas.sness.net