Repolode
eliben

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. 1

    Instala pycparser con pip

    pip install pycparser
  2. 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