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



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



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



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

717   4  

4 ответов:

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.