정규식이나 AST 대신 코드와 유사한 패턴으로 버그를 찾고 코딩 표준을 적용하는 빠른 오픈소스 정적 분석 CLI입니다.
eliben/pycparser
외부 의존성 없이 C 소스 코드에서 AST를 생성하는 순수 Python 구현의 완전한 C99/C11 파서입니다.
- 스타
- 3,577
- 포크
- 657
- 열린 이슈
- 19
- 마지막 커밋
- 16시간 전
어떤 프로젝트인가요?
pycparser는 C 소스 코드를 파싱해 Python 프로그램에서 순회하고 수정할 수 있는 추상 구문 트리(AST)를 만듭니다. C99 표준 부록 A의 문법을 따르며 C11 지원을 목표로 하고, dialect 설정을 통해 C23도 지원합니다. 인터프리터 외에는 의존성이 없는 순수 Python 구현이므로 pip로 쉽게 설치할 수 있습니다.
C 코드는 보통 먼저 전처리해야 하므로, pycparser는 parse_file 함수를 사용하거나 이미 전처리된 코드를 전달해 cpp, gcc -E, clang -E 같은 외부 전처리기를 호출할 수 있습니다. 시스템 헤더가 포함된 파일을 더 빠르게 파싱할 수 있도록 utils/fake_libc_include에 최소한의 표준 라이브러리 가짜 헤더도 제공합니다.
이 프로젝트는 다른 도구의 구성 요소로 널리 사용되며, 특히 C 함수와 타입 선언을 읽는 데 pycparser를 사용하는 cffi 라이브러리가 대표적입니다.
핵심 기능
- 01C99 및 C11 소스 코드를 파싱하며, dialect 옵션으로 C23도 지원합니다.
- 02외부 의존성 없이 순수 Python으로 작성되었습니다.
- 03노드 타입이 _c_ast.cfg에 문서화된 AST를 생성합니다.
- 04cpp, gcc -E, clang -E 같은 외부 전처리기와 함께 사용할 수 있습니다.
- 05표준 헤더가 포함된 코드를 더 빠르게 파싱하도록 최소한의 libc 가짜 헤더를 포함합니다.
활용 사례
- C 코드용 정적 코드 검사기나 린터를 만들 때.
- C 코드의 소스 간 변환 도구나 난독화 도구를 작성할 때.
- AST를 재작성해 C 언어에 사용자 정의 확장을 추가할 때.
- cffi처럼 C 헤더 선언을 파싱해 FFI 바인딩을 생성할 때.
빠른 시작
- 1
pip으로 pycparser를 설치합니다
pip install pycparser - 2
examples 디렉터리에서 사용 예제를 살펴봅니다
사용 전 알아둘 점
- 대부분의 실제적인 C 코드는 파싱하기 전에 외부 C 전처리기(cpp, gcc -E 또는 clang -E)가 필요합니다.
- README에는 pip 패키지에 어떤 표준 헤더가 포함되어 있는지 나와 있지 않습니다. fake libc 헤더는 패키지에 포함되지 않습니다.
토픽
자주 묻는 질문
- pycparser은(는) 무엇인가요?
- 외부 의존성 없이 C 소스 코드에서 AST를 생성하는 순수 Python 구현의 완전한 C99/C11 파서입니다. pycparser는 C 소스 코드를 파싱해 Python 프로그램에서 순회하고 수정할 수 있는 추상 구문 트리(AST)를 만듭니다. C99 표준 부록 A의 문법을 따르며 C11 지원을 목표로 하고, dialect 설정을 통해 C23도 지원합니다. 인터프리터 외에는 의존성이 없는 순수 Python 구현이므로 pip로 쉽게 설치할 수 있습니다.
- pycparser은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- pycparser은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- pycparser은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. pycparser의 마지막 커밋은 2026년 10월 19일입니다.
- pycparser은(는) 어디에 사용할 수 있나요?
- C 코드용 정적 코드 검사기나 린터를 만들 때. C 코드의 소스 간 변환 도구나 난독화 도구를 작성할 때. AST를 재작성해 C 언어에 사용자 정의 확장을 추가할 때. cffi처럼 C 헤더 선언을 파싱해 FFI 바인딩을 생성할 때.
- pycparser는 어떻게 설치하나요?
- pip으로 pycparser를 설치합니다: pip install pycparser examples 디렉터리에서 사용 예제를 살펴봅니다
- pycparser은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/eliben/pycparser
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Windows용 Rufus에서 영감을 받아 Linux에서 ISO 이미지로 부팅 가능한 USB 드라이브를 만드는 베타 Python 유틸리티입니다.
기존 소프트웨어용 에이전트 친화적인 CLI를 생성하고, 바로 설치할 수 있는 CLI를 등록하는 CLI-Hub 툴킷입니다.
텍스트, 이미지, 구조화 데이터의 PII를 탐지하고 익명화하는 오픈소스 Python SDK 및 서비스입니다.
소리를 이용해 기기 간에 소량의 데이터를 주고받는 소형 C++ 라이브러리로, Python, JavaScript, 마이크로컨트롤러에서 사용할 수 있습니다.