読者です 読者をやめる 読者になる 読者になる

コンパイラ読んだ

コンパイラ [コンピュータサイエンス教科書シリーズ] (コンピュータサイエンス教科書シリーズ 8)

コンパイラ [コンピュータサイエンス教科書シリーズ] (コンピュータサイエンス教科書シリーズ 8)

コンパイラという本を読んだ.コンパイラに関する本といえば,

コンパイラ―原理・技法・ツール (Information & Computing)

コンパイラ―原理・技法・ツール (Information & Computing)

最新コンパイラ構成技法

最新コンパイラ構成技法

この辺が定番だと思うのだけれど,まだまだ敷居が高かったのでとりあえずこれを読んでみた. 監修は中田育夫という人です. 中田さんはのRuby仕様書のISO規格に関わっている方で,日本でコンパイラで有名な方です. 学生時代にMatzさんは,中田さんの研究室に所属していて,恩師でもあるそう. ちなみに中田さんのコンパイラ本はこれ.

コンパイラの構成と最適化

コンパイラの構成と最適化

これも日本人が書いたコンパイラ本としては定番らしい.

話は戻って今回の本ですが,大きく「字句解析」「構文解析」「意味解析」「実行時環境」「仮想計算機とコード生成」の章がある. lexとyaccを実際に使いながら簡単な字句解析や構文解析,意味解析などを学び,ミニ言語をつくったりする. 教科書として書かれているので,大学の講義レベルで,それぞれの章のテーマについて基本的な説明から始まり,演習問題とその解答もあって勉強になる. 以下,簡単な章の内容の紹介です.

字句解析

まず字句解析については,lexを使いながら,簡単な字句解析やC言語のソースにたいして,予約語,識別子の認識やクロスリファレンサをつくることが学べる. オートマトンや状態遷移図についても書かれている.

構文解析

いくつかの上向き構文解析,下向き構文解析などについて書かれている.四則演算やミニ言語の開発が学べる.

意味解析

トークンの並びが文法に合っていても,例えばC言語では,宣言された変数でなければ使用することができないなど,コンパイラはそれを発見しなければならない. このようなチェック処理が意味解析と呼ばれる. 例えば,どのような変数が存在するのかなどの管理を行なう入れ子型の静的スコープを扱った記号表の実装が学べる.

実行時環境

実行時のメモリ管理の仕方について書かれている.特に活性レコードと呼ばれる,関数呼び出しに対するメモリ割り当てられるメモリ領域について説明されている.

仮想計算機とコード生成

PL/0言語を用いて仮想計算機のためのコード生成について学べる.

以上です.次は,

言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで

言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで

理論よりも実践的に書かれているらしい,この辺を読もうかなと思っている.