커스텀 문법 추가하기

02. cPython 폴더 구조 에서 말씀드린 것처럼, Grammer/python.gram 파일에 모든 문법의 PEG가 명시되어 있음을 설명드렸습니다.

여기에 커스터 문법을 추가해보려고 합니다. 추가하려는 문법은 proceed 이고, 이 의미는 pass와 동일합니다.

  1. 커스텀 문법 추가하기
    Grammer/python.gram 파일에 small_stmt[stmt_ty] 블록을 찾아가면 'pass' { _Py_Pass(EXTRA) } 파싱 문법이 있습니다.

단순하게 proceed 를 추가하여 동일한 효과를 누리게 합니다.
'pass' | 'proceed' { _Py_Pass(EXTRA) }

  1. Parser 빌드
make regen-pegen 
  1. cPython 빌드
make -j2 -s 
  1. 테스트
./python.exe
 
>>> def example():
...     proceed
...
>>> example()

문법 변경에 대한 논의

문법을 추가하고 변경하는 건 쉽지만 그 추가하는 과정에 있어서 많은 논의가 이루어진다. 이 논의는 주로 PEP 버전으로 제안되곤 한다.

Python의 문법 수정에 유의해야 하는 이유는, 다음과 같다.

  1. 지나치게 많은 언어적 기능이나 복잡한 문법은 간단하고 쉬운 언어를 지향
  2. 문법을 변경하면 하위 호환성이 깨지기 때문에 모든 개발자가 변경에 대응