Repolode
eliben

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

    pip으로 pycparser를 설치합니다

    pip install pycparser
  2. 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 통계는 매일 갱신됩니다.

관련 프로젝트