コンパイラ
コンパイラ
作りながら学ぶ
- 著者:
- 中田 育男(ナカタ イクオ)
- 出版社:
- 株式会社オーム社
- 出版日:
- 2017年10月25日頃
- ISBN:
- 9784274221163
- 在庫:
- メーカー取り寄せ
なぜ注目されているか
書籍紹介
コンパイラの名著、待望の改訂!
1995 年に発行し、以来コンピュータサイエンスにかかわる方々に長く活用されてきた『新コンピュータサイエンス講座 コンパイラ』の改訂版です。
コンパイラを通してソフトウェアのしくみとアルゴリズムを考えるのに役立つよう、例を用いて具体的に記述しています。図表やプログラムを多用し、わかりやすくまとめました。
<おもな改訂内容>
・LL 構文解析の動作例、LR 構文解析の動作例を加えた
・独習者の利便を考え、演習問題の増強、解答の充実をはかった
・9 章「さらに学ぶために」として、より最近の技術について学ぶための指針を示した
・古くなった文献を見直し、追加した
1 章 コンパイラの概要
2 章 コンパイラの簡単な例
3 章 文法と言語
4 章 字句解析
5 章 下向き構文解析
6 章 意味解析
7 章 誤りの処理
8 章 仮想マシンと通訳系
9 章 さらに学ぶために
付録 PL/0′コンパイラのリスト
参考文献
演習問題解答
技書の森解説
コンパイラーの仕組みを、小さな言語の処理系を実際に組み立てる流れに沿って学ぶ教科書です。著者は中田 育男、版元はオーム社で、2017 年 10 月に刊行されました。版元の紹介文によれば、1995 年に発行された『新コンピュータサイエンス講座 コンパイラ』の改訂版で、図表やプログラムを多用し、例を用いて具体的に記述した構成になっています。題材となる言語は PL/0′ で、巻末の付録にはそのコンパイラーのリストが収録されています。
PL/0′ を題材にした全 9 章の構成と改訂の要点
目次は 1 章のコンパイラーの概要と 2 章のコンパイラーの簡単な例から入り、3 章の文法と言語、4 章の字句解析、5 章の下向き構文解析、6 章の意味解析、7 章の誤りの処理、8 章の仮想マシンと通訳系へと進みます。改訂で新たに置かれた 9 章「さらに学ぶために」は、初版以降の新しい技術について学ぶための指針を示す章です。巻末には付録の PL/0′ コンパイラーのリスト、参考文献、演習問題解答が並びます。版元の挙げるおもな改訂内容は、LL 構文解析と LR 構文解析の動作例の追加、独習者向けの演習問題の増強と解答の充実、9 章の新設、古くなった文献の見直しと追加の 4 点です。版元のサイトでは、本書の最後に掲載したソースに加えて yacc 版、Java 版、JavaCC 版、Ruby 版のソースが購入者向けに配布されています。
字句解析から仮想マシンまでを一本の流れで作る意味
コンパイラー の学習が難しいのは、個々の理論が単独では役割を実感しにくいからです。正規表現と有限オートマトンの関係、文法の左再帰を取り除く理由、先読み記号の集合を計算する意味は、それぞれ教科書の一節として読むと抽象的に見えます。ところが、文字の並びを字句に切り出し、字句の並びを文法に照らして解析し、名前の宣言と使用を対応づけ、最後に命令列を生成するという一本の流れの中に置くと、各段階が次の段階に何を渡しているのかがはっきりします。下向き構文解析の代表的な手法である再帰下降は、文法規則を手続きに素直に対応させて書けるため、手で書く解析器として扱いやすく、実用の言語処理系でも採用例の多い方式です。実用のコンパイラーでは解析結果を AST として保持して複数の工程に渡すのが一般的なので、小さな処理系で全体像をつかんでおくと、より大きな処理系の構造を読むときの足場になります。生成した命令を仮想マシンの上で動かす構成は、ネイティブコードの生成や JIT コンパイル といった方式の違いを考える際の基準点にもなります。
前提知識と、網羅型の大著との使い分け
付録のソースを読み、配布されたソースを動かしながら進めるには、何らかのプログラミング言語で一定の長さのプログラムを書いた経験があると安心です。形式言語の知識は 3 章の文法と言語で扱われますが、集合や再帰の考え方に慣れていると理解が早まります。一方で、目次には最適化やレジスター割り付け、ネイティブコード生成を独立して扱う章はなく、これらを体系的に学びたい人には網羅型の大著のほうが目的に合います。低レイヤーの技術書の中で、どの分野から手を付けるかを決めかねている場合は、OS / 低レイヤー本ガイド で全体の地図を確かめておくとよいでしょう。
理論書を開いたものの途中で止まってしまった人、言語処理系の仕組みを自分の手で一度通しておきたい人、構文解析器やドメイン固有言語を実務で書く必要が出てきた人にとって、動く処理系を手元に置きながら理論を確認できる本書は、大著へ進む前の確かな土台になります。
言及した記事 (36 件)
アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
♡ 150go, assembler文系卒エンジニアがどうやって独学でコンパイラを作ったか
♡ 134コンパイラPythonのコンパイラを作りたい #1 - 開発の背景と概要
♡ 90python, c, llvm, compilerMatz の Ruby AOT コンパイラ Spinel を試してみました
♡ 61ruby, compiler, rubykaigi, aot, spinelゲーム専用プログラミング言語『Enaga』をコンパイラから自作した話
♡ 48rust, ゲーム開発, コンパイラ, ecs, 自作言語【Vue.js】コンパイラってよく聞くけど一体全体なんなんだ!?!?!?
♡ 25javascript, typescript, vue, frontend, compilerスクリプト言語「Sheep」を作ってみた
♡ 25Java, 言語処理系コンパイラ講義資料リンク集
♡ 24コンパイラ, 講義資料コンパイラを書くにはコンパイラが必要なのか?
♡ 21コンパイラ, バイナリ, fortran, アセンブリ, 機械語Apple Siliconで進めるCコンパイラ作成入門
♡ 21arm64, c, compiler
この本に興味がある方におすすめ
関連する本
関連記事
ChatGPT に聞けば済む時代に、あえて本を開く理由
生成 AI で何でも聞ける時代に、技術書を読む意味はあるのか。AI の回答と書籍の知識の決定的な違いを掘り下げ、両者の使い分けを提案します。
LLM / 生成 AI 本ガイド - 仕組み / 実装 / エージェント開発の 3 層で選ぶ (2026 年 8 月時点)
LLM (大規模言語モデル) / 生成 AI を学ぶ技術書の選び方を 3 層 (読み物で仕組みを掴む → 中身を実装で理解する → RAG / AI エージェント開発) で整理。2026 年 8 月時点の定番書と、変化の速い分野で本を選ぶときの注意点を解説します。
OS / 低レイヤー本ガイド - コンピューターの仕組みを学ぶ技術書の選び方
OS、コンパイラー、ネットワークなど低レイヤーを学べる技術書の 4 ジャンルと、どこから始めるべきかの指針、賞味期限の見極め方を紹介します。