『2週間でできる! スクリプト言語の作り方』を読みました

2週間でできる! スクリプト言語の作り方 (Software Design plus)

2週間でできる! スクリプト言語の作り方 (Software Design plus)

少し前ですが、ずっと待っていた本がついに発売されました。
本当はじっくり写経してから紹介を書きたかったのですが、なかなか時間がとれないので流し読みした感想を書きます。

私は情報系学科の出身ですが、大学で勉強できてよかったと思うことの一つにコンパイラ理論があります。プログラムをどのように解釈して構文木を構成し、マシン語に落としているのか。これは素人がちょっと頭をひねったくらいでは思いつきません。
本書ではそんなコンパイラの作り方を考え方から丁寧に解説しています。

類似の書籍はいままで何冊も出ていますが、肝心の字句解析や構文解析の部分はyaccANTLRといった自動生成ツールを使ったものが多く、私からすれば本当に復習したい部分が欠けていました。
かといって大学の教科書で採用されている書籍は実装例がC言語のものがほとんどでオブジェクト指向によるコンパイラの実装例は学べません。

本書では、簡単なスクリプト言語を題材にして、徐々に拡張しながら作るスタイルでコンパイラの本質が学べます。
オートマトンで真面目に実装すると大変な字句解析を正規表現で省力化したり、構文解析には内部DSLによるパーサコンビネータを利用したりしているところが、現代利用できる技術を取り入れていて実践的です。
前半では内容があまり難しくならない程度の説明になっており、15章の自習編以降で、大学でも学ぶオートマトンによる字句解析、BNFやLL構文解析ボトムアップ構文解析にもわかりやすく解説されており、本書で学習したうえで専門書でより深く学ぶと良いのではないでしょうか。

言語処理系に興味のある人には間違いなく買いの一冊でしょう。