Ответ 1
Посмотрите на этот анализатор заголовков С++, написанный на Python. Вы также можете написать свой собственный парсер, используя любой из этих инструментов:
Кто-нибудь знает, какой способ использовать файлы заголовков C в Python? Например, у меня есть C-программа, которая включает глобальную переменную:
typedef struct ImageInfo
{
uint8_t revisionMajor;
uint8_t revisionMinor;
uint16_t checksum;
} ImageInfo;
ImageInfo gImageInfo; /* Placed at a specific address by the linker */
Я хотел бы иметь возможность взять двоичный код, сгенерированный компилятором/компоновщиком C, и проанализировать эту структуру (и, возможно, изменить ее) с помощью Python script.
Посмотрите на этот анализатор заголовков С++, написанный на Python. Вы также можете написать свой собственный парсер, используя любой из этих инструментов:
Это было упомянуто вчера на SO; У меня еще не было возможности проверить это еще до конца, но я имею в виду. pycparser
, "анализатор C и генератор АСТ, написанный на Python".
Взгляните на pygccxml. Я использую его для построения графиков в памяти моего исходного кода на C/С++, который я могу использовать в качестве основы для многих задач генерации кода.
PS: Когда я впервые начал писать на основе кода на основе Python, я на самом деле попытался написать парсер самостоятельно: спасите себя от боли и даже не ходите туда! (похоже, что вы уже собрались, хотя...) pygccxml - это все, что вы хотите, и многое другое:)
С той же целью я рассматриваю pyclibrary,
это не полный синтаксический анализатор C, но он нацелен на разбор файлов заголовков C, поэтому его гораздо проще использовать, чем pycparser или какой-либо gsxml-синтаксический анализатор: хотя он слабо документирован, просто попробуйте CParser.py testHeader.h
, и вы увидите, как он работает.
Зависит от pyparsing и, насколько я понимаю, это чистый питон.