Repolode
eliben

eliben/pycparser

Um parser completo de C99/C11 escrito em Python puro, que gera uma AST a partir do código-fonte C sem dependências externas.

Estrelas
3,577
Forks
657
Issues abertas
19
Último commit
há 17 horas

O que é?

pycparser analisa código-fonte C e monta uma árvore sintática abstrata (AST) que programas Python podem percorrer e modificar. Ele segue a gramática de C do Anexo A do padrão C99 e busca cobrir C11, com suporte a C23 disponível por meio de uma configuração de dialeto. É implementado em Python puro e não depende de nada além do interpretador, por isso é fácil de instalar com pip.

Como o código C geralmente precisa passar pelo pré-processador antes, pycparser pode chamar um pré-processador externo, como cpp, gcc -E ou clang -E, seja por meio da função parse_file, seja recebendo código já pré-processado. O projeto também inclui cabeçalhos mínimos falsos da biblioteca padrão em utils/fake_libc_include para acelerar a análise de arquivos que incluem cabeçalhos do sistema.

O projeto é amplamente usado como componente de outras ferramentas, principalmente pela biblioteca cffi, que depende dele para ler declarações de funções e tipos em C.

Recursos principais

  • 01Analisa código-fonte C99 e C11, com C23 disponível por meio de uma opção de dialeto.
  • 02Escrito em Python puro, sem dependências externas.
  • 03Gera uma AST cujos tipos de nós estão documentados em _c_ast.cfg.
  • 04Funciona com um pré-processador externo, como cpp, gcc -E ou clang -E.
  • 05Inclui cabeçalhos mínimos falsos da libc para analisar mais rapidamente código com includes padrão.

Casos de uso

  • Criar um verificador estático de código ou um linter para C.
  • Escrever transformações de código-fonte ou ofuscadores para C.
  • Adicionar extensões personalizadas à linguagem C por meio da reescrita da AST.
  • Gerar bindings de FFI analisando declarações de cabeçalhos C, como faz o cffi.

Início rápido

  1. 1

    Instale pycparser com pip

    pip install pycparser
  2. 2

    Consulte exemplos de uso no diretório examples

Antes de usar

  • A maioria dos códigos C realistas precisa de um pré-processador C externo (cpp, gcc -E ou clang -E) antes de ser analisada.
  • O README não informa quais cabeçalhos padrão estão incluídos no pacote do pip; os cabeçalhos fake libc não estão incluídos nele.

Tópicos

Perguntas frequentes

O que é pycparser?
Um parser completo de C99/C11 escrito em Python puro, que gera uma AST a partir do código-fonte C sem dependências externas. pycparser analisa código-fonte C e monta uma árvore sintática abstrata (AST) que programas Python podem percorrer e modificar. Ele segue a gramática de C do Anexo A do padrão C99 e busca cobrir C11, com suporte a C23 disponível por meio de uma configuração de dialeto. É implementado em Python puro e não depende de nada além do interpretador, por isso é fácil de instalar com pip.
pycparser é gratuito? Qual é a licença?
pycparser é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
pycparser ainda é mantido?
Manutenção ativa. O último commit de pycparser foi em 19 de out. de 2026.
Para que posso usar pycparser?
Criar um verificador estático de código ou um linter para C. Escrever transformações de código-fonte ou ofuscadores para C. Adicionar extensões personalizadas à linguagem C por meio da reescrita da AST. Gerar bindings de FFI analisando declarações de cabeçalhos C, como faz o cffi.
Como instalar pycparser?
Instale pycparser com pip: pip install pycparser Consulte exemplos de uso no diretório examples
Onde consigo pycparser?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/eliben/pycparser

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados