Можно ли скомпилировать код c, используя python? - PullRequest
3 голосов
/ 24 февраля 2012

Я хочу собрать программу на python, которая получает в качестве входных данных путь к файлу .c и затем компилирует его.

Программа выведет на экран OK, если компиляция прошла успешно, и BAD в противном случае.

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

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

  • Он должен работать на сервере Linux с python 2.4.

Спасибо

Ответы [ 3 ]

8 голосов
/ 24 февраля 2012

Конечно, а почему нет? Конечно, вам нужно установить GCC (или llvm), чтобы у вас было что скомпилировать. Вы можете просто использовать os.system или любой другой способ вызова внешней программы.

Конечно, вам, вероятно, лучше взглянуть на что-то вроде SCons , которое уже существует для решения этой проблемы.

Кроме того, чтобы ответить на фактически заданный вопрос, нет ничего, что могло бы помешать вам написать компилятор / ассемблер / компоновщик на python, они просто программы, как и все остальное. Возможно, производительность будет не очень хорошей.

7 голосов
/ 24 февраля 2012

Шаг 1. Получить PLY. Питон Лекс и Як. http://www.dabeaz.com/ply/

Шаг 2. Найдите конфигурацию Yacc / Lex для C. http://www.lysator.liu.se/c/ANSI-C-grammar-y.html

Шаг 3. Настройте PLY, чтобы использовать найденные вами правила языка С.

Шаг 4. Запустить. Вы "компилируете" код на C - проверяете синтаксис.

2 голосов
/ 24 февраля 2012

Если я вас ясно понял, вы просто хотите запустить компилятор с некоторыми аргументами из python?

В этом случае вы можете просто использовать os.system.http://docs.python.org/library/os.html#os.system

Или лучше использовать модуль "подпроцесс".http://docs.python.org/library/subprocess.html#module-subprocess

...