PEP 306 – Python 문법을 바꾸는 방법
- Author:
- Michael Hudson <mwh at python.net>, Jack Diederich <jackdied at gmail.com>, Alyssa Coghlan <ncoghlan at gmail.com>, Benjamin Peterson <benjamin at python.org>
- Status:
- Withdrawn
- Type:
- Informational
- Created:
- 29-Jan-2003
- Post-History:
- 30-Jan-2003
번역·라이선스 안내
이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판
참고
이 PEP는 Python 개발 가이드로 이전되었습니다 [1].
초록
Python의 문법을 바꾸는 일은 Grammar/Grammar와 Python/compile.c를 편집하는 것 이상입니다. 이 PEP는 함께 고쳐야 하는 곳들의 점검 목록이 되는 것을 목표로 합니다.
아마도 불완전할 것입니다. 누락된 부분이 보이면 할 수 있는 한 직접 추가하십시오 – 저자의 소유 의식을 건드리는 일이 아닙니다. 그렇지 않으면 버그나 패치를 제출하여 mwh에게 배정하십시오.
이 PEP는 몇 가지 이유로 Python 문법 해킹에 대한 사용 설명서로 의도된 것이 아닙니다.
근거
사람들은 항상 이 부분에서 실수를 저지릅니다. 나눗셈 연산자(//)를 추가하는 것이 parser 모듈을 망가뜨렸다는 것을 누군가 알아차리기까지 1년이 훌쩍 넘게 걸렸습니다 [2].
점검 목록
Grammar/Grammar: 좋습니다, 아마 이건 이미 알아내셨을 것입니다 :)Parser/Python.asdl은Grammar에 맞추어 변경이 필요할 수 있습니다.make를 실행하여Include/Python-ast.h와Python/Python-ast.c를 재생성하십시오.Python/ast.c는Grammar변경과 관련된 AST 객체를 만들기 위해 변경이 필요합니다.Lib/compiler/ast.py도 순수 Python AST 객체에 맞추어 변경이 필요합니다.Parser/pgen을 다시 실행하여Include/graminit.h와Python/graminit.c를 재생성해야 합니다. (make가 이를 대신 처리해 줄 것입니다.)Python/symbtable.c: 이는 컴파일 단계 직전에 일어나는 심볼 수집 단계를 처리합니다.Python/compile.c: 여러분의 생성 규칙에 대한 옵코드를 생성하기 위해compiler_*함수를 만들거나 수정해야 합니다.Lib/symbol.py,Lib/token.py,Lib/keyword.py중 하나 이상을 재생성해야 할 수 있습니다.parser모듈. 새 문법 일부를test_parser에 추가하고, 통과할 때까지Modules/parsermodule.c를 두드려 보십시오.- 새 문법의 사용 예를
test_grammar.py에 추가하십시오. compiler패키지. 좋은 테스트 방법은compiler패키지로 표준 라이브러리와 테스트 스위트를 컴파일한 다음 그것이 실행되는지 확인하는 것입니다. 이는 Python 2.x에서만 필요하다는 점에 유의하십시오.- Python의 토큰 구조를 바꿀 정도로 나아갔다면,
Lib/tokenizer.py라이브러리 모듈도 변경해야 합니다. - 어떤 변경들은 라이브러리 모듈
pyclbr에 대한 조정이 필요할 수 있습니다. - 문서를 작성해야 합니다!
- 모든 것을 커밋한 후에는
Python/Python-ast.c에 새로운 변경 사항이 생긴 것을 보게 될 가능성이 높습니다. 이는 이 (생성된) 파일이 자신이 생성된 소스의 SVN 버전을 담고 있기 때문입니다. 이를 피할 방법은 없으며, 이 파일은 별도로 제출해야 합니다.
참고 자료
Copyright
This document has been placed in the public domain.