CLI de análise estática rápido e open source que encontra bugs e aplica padrões de código usando padrões semelhantes ao código, em vez de regex ou ASTs.
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
Instale pycparser com pip
pip install pycparser - 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
Utilitário Python em beta para criar pendrives inicializáveis a partir de imagens ISO no Linux, inspirado no Rufus para Windows.
Tutorial de Python com 17 lições que cria do zero um harness de agente semelhante ao Claude Code, começando com um único loop e bash.
Toolkit que gera interfaces de linha de comando nativas para agentes a partir de softwares existentes e oferece o registro CLI-Hub para instalar CLIs prontas.
SDK e serviço open source em Python para detectar e anonimizar PII em texto, imagens e dados estruturados.
Uma pequena biblioteca C++ para enviar pequenas quantidades de dados entre dispositivos por som, com suporte a Python, JavaScript e microcontroladores.