1024バイトのPythonインタープリタをC言語で作成
मूल शीर्षक: Making a Python interpreter in 1024 bytes
यह क्यों महत्वपूर्ण है
言語処理系の最小構成の探求は、インタープリタ設計の教育的価値が高く、組み込み環境への応用可能性もある。
Microsoft所属のAustin Z. Henley氏が、C言語で1024バイト以内のPythonインタープリタを週末の個人プロジェクトとして作成。FizzBuzzプログラムを動作させることに成功し、制作過程をブログで公開した。
Austin Z. Henley氏(Microsoft)は、マクロやライブラリを使わず、純粋なC言語で1024バイト以内のPythonインタープリタを作成する個人チャレンジに取り組んだ。
当初は512バイトでの実現を目指したが、基本的な四則演算や変数代入、if文を実装した時点で既に上限を超過。目標を1024バイトに変更した。
実装の設計は、変数や関数名を単一の小文字1文字に限定し、256要素の整数配列(vars[256])で記号表を管理する方式を採用。ソースコードは999文字の固定長配列(src[999])に格納される。
パーサーは再帰下降方式で式を解析しながら同時に実行する構造。エラー処理は一切なく、入力コードの正しさを前提としている。また、ほとんどの空白を除去する一方、インデントと文字列リテラル内のスペースは保持する。
制御フローの管理には、インデントの深さを基準とした方式を採用。ブロック実行関数はインデントが減少した時点で返り値を返し、CのコールスタックをそのままPythonの再帰処理に活用している。
for文、while文、if文などPythonらしい構文をサポートしており、FizzBuzzプログラムの実行に成功している。CPythonのようなAST生成やバイトコード生成は行わず、直接実行する方式を取っている。