Инструмент для автоматического портирования и языка, который можно компилировать в другие - PullRequest
4 голосов
/ 02 июня 2011

Я просто из любопытства спрашиваю:

  • Существует ли какой-либо инструмент, который может автоматически преобразовывать исходный код разумной сложности с одного языка на другой?
  • Есть ли какой-нибудь "мета-язык", который можно скомпилировать на несколько других языков? Например, CoffeeScript компилируется в Javascript.

Если вы знаете какой-нибудь пример с открытым исходным кодом, это было бы здорово!

Спасибо, что уделили время.

PS: не знаю, как пометить это. Не стесняйтесь редактировать.

Ответы [ 2 ]

1 голос
/ 03 июня 2011

GCC преобразует сложный код C ++ в машинный код и, таким образом, технически является ответом на ваш вопрос.На самом деле таких компиляторов много, но я не думаю, что это то, что вы хотели спросить.

Существуют инструменты, которые встроены для перевода просто одного языка в другойв качестве исходного кода (другой автор предложил "f2C", который является прекрасным примером).Они похожи на компиляторы ... но реже.

Практически нет инструментов, которые могли бы отображать из одного языка во многие другие, из коробки.Проблема состоит в том, что языки имеют разные модели исполнения, типы данных и схемы исполнения, которые такой переводчик должен правильно имитировать на целевом языке.Это «генераторы кода», которые утверждают, что делают это, но они в значительной степени являются спецификациями IMHO довольно простых функций, которые тривиально преобразуются в простой код в целевом языке.

Если вы хотите перевести один язык на другой вВ общем, вам нужна система преобразования программ, например, система, которая может анализировать произвольные языки и для которой вы можете предоставить правила перевода, которые отображаются на другие языки в некотором роде.

Наш DMS Software Reengineering Toolkit является одним из них.Это SO Какие типы шаблонов я мог бы применить в коде, чтобы упростить перевод на другой язык программирования? обсуждает проблемы более подробно.

1 голос
/ 02 июня 2011

Вы можете конвертировать код Fortran в C, используя инструмент f2c .

Для python вы можете преобразовать подмножество языка в C ++, используя shedskin .

Язык vala преобразуется в C до реальногосборник.

...