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

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

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

Вы могли перевести php на другие языки, как Python или рубин? C++ к Java и так далее?

7
задан JasonMArcher 3 August 2015 в 15:59
поделиться

4 ответа

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

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

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

  • родной сборки код, обычно для операционной системы и аппаратного обеспечения. Если это так, программа упоминается как компилятор;
  • родной сборчный код монтажа для другого ОС и / или оборудования. Это также можно назвать компилятором, но часто упоминается как кросс-компилятор;
  • в промежуточную форму, которая может быть выполнена виртуальной машиной какого-либо вида. Это не настоящий компилятор, но в любом случае часто называют компилятором. Java, c #, f #, vb.net, и т. Д. Компиляторы "все попадают в эту категорию;
  • на другой язык целиком. Это называется переводчиком, и есть примеры, скажем, Java к переводчикам C #. Они обычно имеют различные степени успеха, потому что идиомы часто не легко переводятся;
  • переводчики следуют тому же принципу, но обычно выполняют обработанную форму на месте, а не спасать его где-то. Perl, PHP и Shell Screpts все попадают в эту категорию. PHP, например, будет хранить OPCODES в кеше OPCode в качестве промежуточной формы (если кэширование OPCoding включено), но эта промежуточная форма не сохраняется, поэтому она все еще безопасна для вызова PHP интерпретатора.
11
ответ дан 6 December 2019 в 10:00
поделиться

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

2
ответ дан 6 December 2019 в 10:00
поделиться

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

Мы использовали его в одном из наших проектов для создания привязки / обертков Python, Java и Ruby для C ++ Framework. Увидеть это в действии в http://marsyas.sness.net

1
ответ дан 6 December 2019 в 10:00
поделиться

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

5
ответ дан 6 December 2019 в 10:00
поделиться