Меня попросили написать переводчик кода, который возьмет программу Python и произведет программу на C. Есть ли у вас идеи, как я могу подойти к этой проблеме или это возможно?Написание кода переводчика с Python на C?
ответ
Посмотрите на Shedskin. Он делает именно это (хорошо, для C++ и для подмножества Python и его модулей). Но он должен быть в состоянии предоставить ценную информацию о том, как подойти к этой конкретной проблеме (хотя писать свою собственную, конечно, будет не быть тривиальной задачей).
Спасибо, Кристофер. Сейчас я изучу исходный код Шедскина. – bodacydo
Shedskin: http://code.google.com/p/shedskin/
подталкивания Python: http://www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html
PyCXX: http://cxx.sourceforge.net/
Cython: http://www.cython.org/
из http://wiki.python.org/moin/compile%20Python%20to%20C, есть перечень соответствующих проектов.
Pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
Психо: http://psyco.sourceforge.net/
RPython: http://code.google.com/p/rpython/
Там фундаментальный вопрос здесь: это намерение в основном создать компилятор Python, который использует C в качестве бэк-энда, или конвертировать программу в C и поддерживать C потом?
Написание компилятора, который производит (действительно уродливый) C, поскольку его вывод, вероятно, не является тривиальным - компилятор редко существует, а генерация кода для Python будет сложнее, чем для многих других языков (динамическая типизация, в особенно трудно компилировать, по крайней мере, до очень эффективного выхода). OTOH, по крайней мере, парсер будет намного проще, чем для некоторых языков.
Если «translating», вы имеете в виду преобразование Python в C, которое является удобочитаемым и поддерживаемым, это совершенно другой вопрос - это довольно сложно, мягко говоря, существенно. Реально, я сомневаюсь, что любой машинный перевод будет стоить много - слишком большие различия в том, как вы обычно подходите к задачам в Python и C, чтобы надеяться на достойный машинный перевод.
+1: Python не является C с другим синтаксисом. Это принципиально другой язык с уникальной семантикой. Если бы это был «C с другим синтаксисом», кто-то уже написал бы это преобразование. –
Это трудно поверить, что никто не упомянул Cython - в значительной степени стандартом де-факто для данного вида работы, на мой взгляд: http://www.cython.org/
Я не решаются предугадывать ваши потребности, не слышать больше, но если вас «попросили написать переводчика кода» (кем-то вроде одного из моих худших боссов), это предполагает недоразумение на определенном уровне. Моя первоначальная реакция заключается в том, что (а) кто-то считает, что «Python = slow, C = fast» всегда, и (б) переводчик кода для Python будет легко писать. Я вернусь и спрошу, почему они этого хотят. – Ken
Возможный дубликат [Преобразование программы Python в код C/C++?] (Http://stackoverflow.com/questions/4650243/convert-python-program-to-c-c-code) –