Python 3.10 신규 문법 : Parenthesized context managers와 PEG Parser
Python 3.10 추가 기능 - 괄호로 둘러싸인 Context Manager Python 3.10부터 아래와 같이 Context Manager사용 시 괄호 안에서 여러 줄을 사용하는 것이 가능해졌다. Python 3.10에 반영된 이유 아래 사진과 같이 Github Issue에서 귀도 반 로섬은 PEG-based parser가 도입(Python 3.9)된 이후인 3.10에서 해당 기능을 구현하는 것을 제안하다. Python 3.10은 20.5.18에 개발이 시작되서 21.10.4 final 버전이 배포된다. Python 3.9는 19.6.4에 개발이 시작되서 20.10.5에 final 버전이 배포된다. Parser변경 Migration 계획 3.9 alpha 6 버전에서 PEG 기반의 parser를 command-line flag와 환경 변수와 같이 포함한다. 이는 이전 Parser로 전환하는 것이 가능하다. 모든 Python API(ast.parse와 compile)은 설정된 flag와 환경변수를 사용할 것이고 deafult parser는 신규 PEG기반의 Parser로 지정된다. 3.10 이 배포될 때까지 이전 parser와 그와 관련된 코드들은 유지될 것이다. 이전 Parser가 제거될 때까지 PEG Parser를 요구하는 새로운 문법이 추가되지 않을 것이다. 3.10 에서 이전 Parser와 commnad-line flag, 환경변수, parser모듈 및 그와 관련된 코드는 삭제 될 것이다. Parser가 변경된 이유(LL(1) → PEG)? LL(1) Parser와 PEG Parser에 대해서 간략히 살펴보고, LL(1) Parser가 갖는 문제점을 통해서 CPython의 Parser가 LL(1) Parser에서 PEG Parser로 변경된 이유에 대해서 확인해본다. Parser의 종류 이름 LL(1) PEG 설명 Left to Right Left Most Derivation Tree
- seunghoChoeS