読者です 読者をやめる 読者になる 読者になる

【読んだだけ】Python言語のソースをいじり文法を改良する

Modifying the Python language in 6 minutes – Hacker Noon

increment and decrement · tonybaloney/cpython@fd7c20c

CPythonをいじってみよう啓蒙記事。Pythonにインクリメント演算子を実装するという想定である。当然こんなものはPEPを通らないので教育目的に限る。

流れ

  1. Pythonには文法(Grammar)ファイルが存在する。そこに付け足したい文法を書き足す。
  2. 字句解析(Lexer)をいじる。CPythonではParser/tokenizer.cトークンの名前が定義されている。ヘッダーなども適宜書き換える。
  3. 構文解析(Parser)をいじる。トークンをASTに変換するところで、Pythonにはast_for_stmtast_for_exprがある。インクリメントを実装する場合はast_for_exprの中身をいじる。このへんはCPythonの構造体や関数を使っていくので中身を知らないと難しい。
  4. コンパイラ(Compiler)。astをバイトコードに変換する。ここでは触らない。
  5. インタプリタInterpreter)。バイトコードをマシン固有のoperationに変換する。どういうことかというと、OSごとにスレッドなどのAPIの取り扱いがたいそう異なるのでそこの違いを吸収している。触らない。

なんで手動かさんの

python-dモードで起動するにはビルドしないといけないらしいが面倒だった(クズ)