cpython
CPython은 C로 작성된 컴파일러를 사용하는 python 인터프리터 언어
c 로 작성된 이유
- 셀프호스팅 컴파일러는 고 컴파일러척럼 자기 자신으로 작성한 컴파일러이다. 셀프 호스팅 컴파일러는 부트스트래핑이라는 단계를 통해서 만들어진다.
- 소스대 소스 컴파일러는 컴파일러를 이미 가지고 있는 다른 언어로 작성한 컴팡일러이다.
cpython 배포된 소스코드 클론해서 들고오기
git clone --branch 3.9 https://github.com/python/cpython
cd python
mac은 기본적으로 xcode에서 기본적인 툴킷을 제공하기때문에 xcode툴킷만 다운로드 하ㅕㅁㄴ 대부분의 준비가 끝난다.
xcode-select --install
다음 의존성 brew로 설치
brew install openssl xz zlib gdbm sqlite
환경번수 설정
CPPFLAGS="-I$(brew --prefix zlib)/include LDFALGS="-L$(brew --prefix zlib)/lib" ./configure --with-openssl=$(brew --prefix openssl) --with-pydebug"
위 명령어는 한번만 실행하면된다. 위 명령어를 실행하면 ./configure가 저장소최상단에 생성한 mzkefile이 빌드 과정을 자동화한다. 다음 명령어로 Cpython 바이너리를 빌드합니다.
make -j2 -s
빌드 중오류가 발생하거나 일부가 빌드 되지 않았다고해서 그 패키지를 사용하지않는다면 문제가 되지 않는다.
빌드가 끝나면 pyhotn.exe 바이너리를 생성합니다. 소스코드를 수정하면 동일한 플래그로 make를 다시 실행해야 합니다.
python.exe는 Cpython의 디버그 바이너리 입니다.
./python.exe
문법 및 언어 레퍼런스
Doc/reference 디렉터리에 파이썬 언어의 기능을 설명하는 reStructuredText 파일을 담고 있다. 이 파일들의 파이썬 언어 레퍼런스를 구성한다.
문법 파일
파이썬의 문법 파일은 파서 표현식 문법 PEG사양을 사용.
- *로 반복 표현
- +로 최소 한번 반복 표현
- "[]"로 선택적인 부분 표현
- | 로 대안을 표현
- ()로 그룹을 표현한다.
'CPython' 카테고리의 다른 글
CPython/ 평가루프 (0) | 2023.01.24 |
---|---|
CPython/컴파일러 (2) '거의 같음' 연산자 구현하기(2) (0) | 2023.01.08 |
CPython/컴파일러 (1) (0) | 2023.01.08 |
CPython/렉싱과 파싱/ '거의 같음'연산자 구현(1) (2) | 2022.12.10 |
CPython 구성과 입력 (2) | 2022.12.10 |