インタプリタを作っている
Go言語でつくるインタプリタを読んでいる。 前々から何かプログラミング言語を作ってみたかったので買ってみた。 まだハッシュマップとかマクロとか実装していないけど一旦紹介。
本の目次
内容
本書ではmonkey
というC言語風の言語を実装していく。
実装の仕方はmonkeyのインタプリタ実装に必要な物を
1. テストを書く
2. テストをする
3. 最小限必要な単位で実装する
4. テストをする
5. 実用的な範囲まで拡張して実装する
といったテスト駆動開発の手法を用いて進めていく。 テスト内容もGolangのスライスで管理しているため、簡単にテストケースを増やせる。 そのため新しく機能を実装しようと思った時でも簡単にテストと実装を繰り返すことができる。
字句解析
この章では入力されたソースコードをトークンへ変換する。 主に入力されたソースコードをどこまで読んだか、どのトークンへ変換するか機能を実装する。
構文解析
前章で作成した字句解析器を利用しASTを作れるよう実装していく。
評価
ASTを解釈、評価していく。 このあたりで計算や関数の作成ができるようになる。
インタプリタの拡張
真偽値や数値以外に文字列や配列、ハッシュマップを実装する。 今はここまでやった。
終わりに
- 本書はインタプリタを作るという目的のもとGoを使用したテスト駆動開発が学べる。
- 言語実装にあたってGo言語任せな部分がある(GCなんかはそう)が、プログラミング言語をどのように実装すれば良いか知りたい人にとっては良書だと思う。
まだもう少しだけ実装する内容が残っているので早く読み進める。