Быстрый CLI-инструмент статического анализа с открытым исходным кодом: находит ошибки и проверяет соблюдение стандартов с помощью похожих на код шаблонов, а не regex или AST.
eliben/pycparser
Полноценный парсер C99/C11 на чистом Python: строит AST исходного кода на C и не требует внешних зависимостей.
- Звёзды
- 3,577
- Форки
- 657
- Открытые issues
- 19
- Последний коммит
- 19 часов назад
Что это?
pycparser разбирает исходный код на C и строит абстрактное синтаксическое дерево (AST), которое программы на Python могут обходить и изменять. Парсер следует грамматике C из приложения A стандарта C99 и стремится поддерживать C11; поддержку C23 можно включить настройкой диалекта. Проект написан на чистом Python и зависит только от интерпретатора, поэтому легко устанавливается через pip.
Код на C обычно нужно предварительно обработать, поэтому pycparser умеет вызывать внешний препроцессор, например cpp, gcc -E или clang -E, через функцию parse_file либо принимать уже обработанный код. В комплект также входят минимальные заглушки заголовков стандартной библиотеки в utils/fake_libc_include — они ускоряют разбор файлов, подключающих системные заголовки.
Проект широко используется как компонент других инструментов. Самый известный пример — библиотека cffi, которая использует pycparser для чтения объявлений функций и типов на C.
Ключевые возможности
- 01Разбирает код на C99 и C11; поддержку C23 можно включить параметром диалекта.
- 02Написан на чистом Python и не требует внешних зависимостей.
- 03Строит AST; типы узлов описаны в _c_ast.cfg.
- 04Работает с внешними препроцессорами, например cpp, gcc -E или clang -E.
- 05Включает минимальные заглушки заголовков libc, ускоряющие разбор кода со стандартными директивами include.
Сценарии использования
- Создание статических анализаторов и линтеров для кода на C.
- Разработка преобразователей исходного кода или обфускаторов для C.
- Добавление собственных расширений языка C путём переписывания AST.
- Генерация FFI-привязок по объявлениям из заголовков C, как это делает cffi.
Быстрый старт
- 1
Установите pycparser с помощью pip
pip install pycparser - 2
Посмотрите примеры использования в каталоге examples
Что важно знать
- Для разбора большей части реалистичного кода на C требуется внешний препроцессор C (cpp, gcc -E или clang -E).
- В README не указано, какие стандартные заголовочные файлы входят в пакет pip; заголовки fake libc в него не включены.
Темы
Частые вопросы
- Что такое pycparser?
- Полноценный парсер C99/C11 на чистом Python: строит AST исходного кода на C и не требует внешних зависимостей. pycparser разбирает исходный код на C и строит абстрактное синтаксическое дерево (AST), которое программы на Python могут обходить и изменять. Парсер следует грамматике C из приложения A стандарта C99 и стремится поддерживать C11; поддержку C23 можно включить настройкой диалекта. Проект написан на чистом Python и зависит только от интерпретатора, поэтому легко устанавливается через pip.
- pycparser можно использовать бесплатно? Какая у него лицензия?
- pycparser распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- pycparser всё ещё поддерживается?
- Активно поддерживается. Последний коммит в pycparser — 19 окт. 2026 г..
- Для чего можно использовать pycparser?
- Создание статических анализаторов и линтеров для кода на C. Разработка преобразователей исходного кода или обфускаторов для C. Добавление собственных расширений языка C путём переписывания AST. Генерация FFI-привязок по объявлениям из заголовков C, как это делает cffi.
- Как установить pycparser?
- Установите pycparser с помощью pip: pip install pycparser Посмотрите примеры использования в каталоге examples
- Где скачать pycparser?
- Исходный код и инструкции по установке — на GitHub: https://github.com/eliben/pycparser
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Бета-утилита на Python для создания загрузочных USB-накопителей из ISO-образов в Linux, вдохновлённая Rufus для Windows.
Курс из 17 уроков по Python: с нуля создайте каркас агента наподобие Claude Code, начав с одного цикла и bash.
Набор инструментов для создания CLI, которыми AI-агенты могут управлять существующим ПО, и CLI-Hub для установки готовых решений.
Открытый Python SDK и сервис для обнаружения и обезличивания персональных данных в тексте, изображениях и структурированных данных.
Компактная библиотека на C++ для передачи небольших объёмов данных между устройствами с помощью звука; доступна для Python, JavaScript и микроконтроллеров.