2013-08-28 3 views
0

Я хочу перевести простой язык программирования на другой язык программирования. Мне нужно только, чтобы результат был синтаксически действительным, поэтому часть генерации кода может меня отбросить.Перевод на языке программирования

Скажите, что подмножество Python для C. Я чувствую, что могу немного обмануть и просто «скопировать-вставить» большую часть кода, но скажу, что я хотел, чтобы слияние Python/он становится нетривиальным (для меня, на данный момент).

Я проделал весь путь к парсеру с рекурсивным спусканием сверху вниз (фактическая грамматика в ожидании). Что мне делать дальше? У меня есть копия книги драконов (2-е изд.), Но, сбившись с места, где я сейчас, я не вижу, как я могу это сделать и в то же время генерировать код. Я не уверен, что это возможно для канава, но мне не нужно создавать исполняемый файл и не продлевать программу для других языков вывода, требующих промежуточного кода.

Я застрял. Программа написана на C.

+1

Если вам нужен только синтаксически правильный вывод, вы можете сгенерировать «main() {}» и сделать это. Дело в том, что это никогда не бывает так просто. Вы должны перевести понятия в исходный код в эквивалентные понятия на целевом языке. Не всегда очевидно, как это сделать, и часто перевод в какой-то момент зависит от информации «далеко» в коде. Я думаю, что «я упал, как будто могу немного обмануть», скорее всего, не сработает. Предложите вам прочитать серьезную книгу компиляторов, прежде чем идти гораздо дальше. –

+0

Этот вопрос появился снова, без дальнейших ответов. OP может быть заинтересована в этом обсуждении о построении (особенно «sloppy») переводчиков языка: http://stackoverflow.com/questions/3455456/what-kinds-of-patterns-could-i-enforce-on-the-code -to-make-it-easy-to-translat/3460977 # 3460977 –

+0

Раньше я использовал LLVM для достижения этого. Если у вас есть интерфейс LLVM для вашего языка (или вы можете написать его), вы можете написать пропуск LLVM для генерации исходного кода для другого языка. – silverclaw

ответ

0

Несколько Python-to-C compilers уже разработаны. Например, существует подмножество Python, называемое RPython, которое может быть автоматически переведено на C.

Смежные вопросы