Lispインタプリタの書き方

プログラミング言語がどのように動作するかを学ぶことで、深い知識を得ることができます。PythonでLispインタプリタを構築することは、それを理解するための古典的な方法です。

Peter Norvigは2010年にこのトピックに関する有名なガイドを執筆しました。インタプリタ設計の原則は変わりません。コードがどのように実行へと変わるのかを学ぶことができます。

インタプリタは主に3つの段階に従います:

  • 字句解析: 生のコードをトークンに分解します。これらは単語や記号のような小さな断片です。
  • 構文解析: トークンをツリーに変換します。このツリーはコードの構造を示します。
  • 評価: ツリーを辿って操作を実行し、結果を得ます。

Lispはこれをシンプルにします。S式を使用します。これは、すべてが括弧内のリストであることを意味します。通常、最初の項目が関数であり、残りが引数です。

まず、(+ 10 (* 2 5)) のようなコードをトークンに変換します。

トークンは次のようになります: '(', '+', '10', '(', '*', '2', '5', ')', ')'

これらの核となるメカニズムを学ぶことは、日々のツールの使い方を変えてくれます。

Source: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-how-to-write-a-lisp-interpreter-in-python-2010-22ca