KDOC 714: 『Go言語でつくるインタプリタ』
この文書のステータス
- 作成
- 2026-10-18 貴島
- レビュー
- 2026-10-18 貴島
概要
『Go言語でつくるインタプリタ』は、Goで小さな言語Monkeyのインタプリタを作る本である。
メモ
- 字句解析で文字列をトークン列にし、構文解析でトークン列をASTにし、ASTを評価する。付録ではASTを受け取って書き換えて返すマクロ展開を足す
- 一通り写経した。部分ごとのコードは読めたが、別の言語で同じものを作れるほどには腑に落ちていない
関連
- 参考: KDOC 27: Cコンパイラを書く。字句解析あたりはそのまま流用できるところが多かった
- 対比: KDOC 190: 『Rubyのしくみ Ruby Under a Microscope』。Monkey は AST を木のまま辿って評価する。Ruby は AST をバイトコードにしてから仮想マシンで実行する
- 追加調査: KDOC 289: 『コンパイラとバーチャルマシン』。Monkey と バーチャルマシンにはどういった違いがあるか
- 違い: KDOC 702: Emacs Lispのシンボルは値と関数を別々に持つ。Monkey は名前と値を紐づける表が1つだけだが、Emacs Lisp では値と関数が別の入れ物になっている