Мне в основном нужно написать препроцессор C с Python, я искал его, и так как мне нужно полностью настраивать свой код и прекрасно понимать, что происходит, я лучше пишу сам.Создание препроцессора с Python
Вот где я. Сначала я разбираю некоторые файлы заголовков (.h), чтобы найти ключевое слово #define и создать словари со всеми установленными директивами (с их значениями, которые у них есть). Затем мне нужно проанализировать исходные файлы (.c) в зависимости от директив, которые я нашел ранее. Механизм, который я использую на данный момент, чтобы проверить, должен ли код обрабатываться, следующий: я беру все имя своего имени и их значения и делаю exec("define_name = define_value")
(со значением «1», если не указано). Затем, чтобы разрешить условие, такое как #if defined DEFINE_1 || defined DEFINE_2 && (DEFINE_3 == 10) ....
, я удаляю ключевое слово препроцессора C, чтобы сделать их стиль Python, который будет производить DEFINE_1 or defined DEFINE_2 and (DEFINE_3 == 10)
.
И наконец я использую eval(...)
на этой строке, чтобы узнать результат.
ВОПРОС: Мне было интересно, нужно ли использовать exec/eval, и многие люди не хотят использовать их, есть ли лучшее решение?
В моем опыте с препроцессорами на основе Python, Python слишком медленный, чтобы быть практичным для этого. Кроме того, стандартные библиотеки, например, MSVC плохо препроцесс (хотя хуже компиляции). Какую проблему ты пытаешься решить? – imallett