Lispインタプリタの書き方
プログラミング言語がどのように動作するかを学ぶことで、深い知識を得ることができます。PythonでLispインタプリタを構築することは、それを理解するための古典的な方法です。
Peter Norvigは2010年にこのトピックに関する有名なガイドを執筆しました。インタプリタ設計の原則は変わりません。コードがどのように実行へと変わるのかを学ぶことができます。
インタプリタは主に3つの段階に従います:
- 字句解析: 生のコードをトークンに分解します。これらは単語や記号のような小さな断片です。
- 構文解析: トークンをツリーに変換します。このツリーはコードの構造を示します。
- 評価: ツリーを辿って操作を実行し、結果を得ます。
Lispはこれをシンプルにします。S式を使用します。これは、すべてが括弧内のリストであることを意味します。通常、最初の項目が関数であり、残りが引数です。
まず、(+ 10 (* 2 5)) のようなコードをトークンに変換します。
トークンは次のようになります: '(', '+', '10', '(', '*', '2', '5', ')', ')'
これらの核となるメカニズムを学ぶことは、日々のツールの使い方を変えてくれます。