CLI de análisis estático, rápido y de código abierto, que detecta errores y aplica estándares de codificación mediante patrones similares al código, en lugar de regex o AST.
eliben/pycparser
Parser completo de C99/C11 escrito en Python puro, que genera un AST a partir de código fuente C sin dependencias externas.
- Estrellas
- 3,577
- Forks
- 657
- Issues abiertos
- 19
- Último commit
- hace 17 horas
¿Qué es?
pycparser analiza código fuente C y construye un árbol de sintaxis abstracta (AST) que los programas Python pueden recorrer y modificar. Sigue la gramática de C del Anexo A del estándar C99 y busca cubrir C11; ofrece compatibilidad con C23 mediante una opción de dialecto. Está implementado en Python puro y no depende de nada más que del intérprete, por lo que se instala fácilmente con pip.
Como el código C suele necesitar preprocesamiento, pycparser puede invocar un preprocesador externo, como cpp, gcc -E o clang -E, ya sea mediante su función parse_file o pasándole código que ya se haya preprocesado. También incluye encabezados mínimos ficticios de la biblioteca estándar en utils/fake_libc_include para acelerar el análisis de archivos que incluyen encabezados del sistema.
El proyecto se usa ampliamente como componente de otras herramientas, sobre todo de la biblioteca cffi, que depende de él para leer declaraciones de funciones y tipos de C.
Funciones clave
- 01Analiza código fuente C99 y C11, con C23 disponible mediante una opción de dialecto.
- 02Está escrito en Python puro y no tiene dependencias externas.
- 03Genera un AST cuyos tipos de nodo se documentan en _c_ast.cfg.
- 04Funciona con un preprocesador externo, como cpp, gcc -E o clang -E.
- 05Incluye encabezados ficticios mínimos de libc para analizar más rápido código que incluye encabezados estándar.
Casos de uso
- Crear un comprobador estático de código o un linter para código C.
- Escribir transformaciones de código fuente a código fuente u ofuscadores para C.
- Añadir extensiones personalizadas al lenguaje C mediante la reescritura del AST.
- Generar bindings de FFI analizando declaraciones de encabezados C, como hace cffi.
Inicio rápido
- 1
Instala pycparser con pip
pip install pycparser - 2
Consulta ejemplos de uso en el directorio examples
Antes de usarlo
- La mayoría del código C realista necesita un preprocesador C externo (cpp, gcc -E o clang -E) antes de analizarse.
- El README no indica qué encabezados estándar incluye el paquete de pip; los encabezados fake libc no están incluidos.
Temas
Preguntas frecuentes
- ¿Qué es pycparser?
- Parser completo de C99/C11 escrito en Python puro, que genera un AST a partir de código fuente C sin dependencias externas. pycparser analiza código fuente C y construye un árbol de sintaxis abstracta (AST) que los programas Python pueden recorrer y modificar. Sigue la gramática de C del Anexo A del estándar C99 y busca cubrir C11; ofrece compatibilidad con C23 mediante una opción de dialecto. Está implementado en Python puro y no depende de nada más que del intérprete, por lo que se instala fácilmente con pip.
- ¿pycparser es gratuito? ¿Qué licencia tiene?
- pycparser es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿pycparser sigue mantenido?
- Mantenimiento activo. El último commit de pycparser fue el 19 oct 2026.
- ¿Para qué puedo usar pycparser?
- Crear un comprobador estático de código o un linter para código C. Escribir transformaciones de código fuente a código fuente u ofuscadores para C. Añadir extensiones personalizadas al lenguaje C mediante la reescritura del AST. Generar bindings de FFI analizando declaraciones de encabezados C, como hace cffi.
- ¿Cómo se instala pycparser?
- Instala pycparser con pip: pip install pycparser Consulta ejemplos de uso en el directorio examples
- ¿Dónde consigo pycparser?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/eliben/pycparser
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Utilidad beta en Python para crear unidades USB de arranque a partir de imágenes ISO en Linux, inspirada en Rufus para Windows.
Tutorial de Python de 17 lecciones para crear desde cero un entorno de agente similar a Claude Code, empezando con un único bucle y bash.
Kit de herramientas que genera interfaces de línea de comandos nativas para agentes a partir de software existente e incluye CLI-Hub, un registro para instalar CLIs listas para usar.
SDK y servicio de Python de código abierto para detectar y anonimizar información personal identificable en texto, imágenes y datos estructurados.
Una pequeña biblioteca de C++ para enviar pequeñas cantidades de datos entre dispositivos mediante sonido, utilizable desde Python, JavaScript y microcontroladores.