見出し画像

Go 言語でつくるインタプリタにチャレンジ

Go でプログラミング言語を作る本。最近あんま技術的な勉強ができてないので、ちょっとした焦りが。本書は Go がわからなくてもできるというのと、TDD なのが良いなと思ってやってみることに。もちろん、プログラミング言語作りにも興味はある。

9月23日から11月12日まで毎日欠かさず30分程度のトライを続けて無事終了。正直、あんまりじっくり時間をかける余裕もないから写経がメインではあったのでかなり理解が浅いが…。それにしてもおもしろかった!

AST を構築して eval するまでという一連の流れが順序よく理解できるようになっている。難解な箇所があっても「この説明はわからないと思うけど、とりあえずコードを見てみよう」みたいなノリがあったり、安心して読み進められた。

TDD なのも良かった。何度かタイプミスをやらかして、テスト通りの結果にならずに試行錯誤する結果になってしまったけども、テストがあるので間違いを探しやすかった。

仮に「自分でゼロから構文解析の処理を考える」ってなったら、きっと恐ろしく効率の悪い実装になるんだろうなというのは想像に難くないので手を出す気なんてまるで起きないわけだけども、どうもこうした構文解析の手法であったりは論文になっているらしい。

本書ではそのなかのひとつである「Pratt パーサ」というものを採用している。なんと1973年に書かれたそうだ。生まれる前やんけ!!


さて、作業結果は GitHub にあげています。GitHub Actions でテストを動かしたりしてるので、もしかしたら誰かの参考になるかも。


余談ですが、写経するにしても開発環境が整ってないと補完も満足に使えないので、思いがけず Vim の開発環境構築を頑張ってしまった。設定大好きマンだから、これも楽しいです。


本書の続編として「Writing A Compiler In Go」というのがあるそうです。Go 言語でつくるコンパイラ、ってところか。別の学習を始めてしまったのでしばらく先になりそうですが、こちらのコンパイラ作りにも挑戦してみたいと思ってます。


この記事が気に入ったらサポートをしてみませんか?