Lectures/Experiments in Computer Science 2 2008 / 講義・実験/情報システム学実験2 コンパイラ (2008年度)

WebCT

進捗状況(毎週のレポート)はWebCT経由で提出してください.

http://webct.ritsumei.ac.jp/

インタプリタ試作品

國枝研のWWWサイトに,Web 上で動くコンパイラのサンプルと,インタプリタがあります.

http://www.hpcss.is.ritsumei.ac.jp/Class/

実験スケジュール

実験日テーマ 実験日テーマ 対応するレポート
8/1実験ガイダンス(水・木 合同) 8/1実験ガイダンス(水・木 合同) 提出物0 班分け申請
前半ソフトウェア実験 後半ソフトウェア実験
実験日テーマ 実験日テーマ 対応するレポート
10/1第0回 実験ガイダンス 10/1第0回 実験ガイダンス 提出物1 字句解析部(全員がそれぞれ提出)
10/8第1回 構文解析部の作成 その1 11/26第1回 構文解析部の作成 その1 提出物2 構文解析部(全員が各自の担当部分を提出)
10/15第2回 構文解析部の作成 その2 12/3第2回 構文解析部の作成 その2 提出物3 識別子表のデータ構造の設計仕様(班で1部提出)
10/22第3回 単体テストから結合テスト,デバッグ その1 12/10第3回 単体テストから結合テスト,デバッグ その1 提出物4 各自のテストプログラムとバグレポート(全員が各自のテストプログラム,バグレポートを提出)
10/29第4回 単体テストから結合テスト,デバッグ その2 12/17第4回 単体テストから結合テスト,デバッグ その2 提出物5 各自のテストプログラムとバグレポート,担当部分のソースコード(全員が各自のテストプログラム,バグレポート,ソースコードを提出)
11/5第5回 単体テストから結合テスト,文法の拡張 その1 12/24第5回 単体テストから結合テスト,文法の拡張 その1 提出物6 各自のテストプログラムとバグレポート(全員が各自のテストプログラム,バグレポートを提出)
11/12第6回 単体テストから結合テスト,文法の拡張 その2 1/7第6回 単体テストから結合テスト,文法の拡張 その2 提出物7 各自のテストプログラムとバグレポート,担当部分のソースコード(全員が各自のテストプログラム,バグレポート,ソースコードを提出)
11/19第7回 実行デモンストレーションとレポート作成 1/14第7回 実行デモンストレーションとレポート作成 提出物8 各自のテストプログラムとバグレポート,担当部分のソースコード(全員が各自のテストプログラム,バグレポート,ソースコードを提出)
提出物9 LaTeX で記述した最終レポート(全員が提出)

参考文献

参考文献は,図書館(メディアセンター)などで, 「コンパイラ」を条件として検索すると見つけられます.

教科書として指定されているもの
  • 今城哲二,布広永示,岩澤京子,千葉雄司
    コンパイラとバーチャルマシン
    情報処理学会 IT Text シリーズ,オーム社,2004年
    (バーチャルマシンと題名に入っているだけあって,JITコンパイラの説明が入っているのが特徴. それ以外のコンパイラに関する記述は一般的なコンパイラの教科書.)
  • 石田綾著,中田育男監修
    スモールコンパイラの制作で学ぶプログラムのしくみ
    技術評論社,2004年
    (文系出身の著者が中田先生のもとでゼロからコンパイラを学んで作り上げた記録になっており, 専門的な内容が隠れているため読み易いかもしれません.)
日本でコンパイラを学ぶならこれが基本
  • 中田育男
    コンパイラ
    新コンピュータサイエンス講座シリーズ,オーム社,1995年
    (次の産業図書のコンパイラと区別するために, オームコンパイラとか青い背表紙のコンパイラとか呼んでいました. PL/0' ぴーえるぜろだっしゅ というコンパイラを作成しています. 一般的な教科書・入門書です.)
    正誤表,PL/0' コンパイラのソースコードなど
  • 中田育男
    コンパイラ
    コンピュータサイエンス・ライブラリー,産業図書,1981年
    (大学の講義を本にまとめたものということで, コンピュータサイエンスの学生から専門向けの教科書という感じです. 最適化についてページが割かれているのが, のちの「コンパイラの構成と最適化」につながっているのかも知れません.)
  • 中田育男
    コンパイラの構成と最適化
    浅倉書店,1999年
    (コンパイラのフロントエンド...本実験で作成するような部分というのは, 理論的にもサポートツールにしてもほぼ枯れた技術と言えます. しかし,バックエンド側とくに最適化器/オプティマイザはまだまだ研究開発が続いています. この本は最適化に大きなページを割き,世界的にもあまり例のない名著と言われています. ちなみに出版前にわたしも中田先生の原稿とプログラムのチェックをしたので,まえがきに謝辞として名前が載っています.)
    正誤表など
  • 佐々政孝
    プログラミング言語処理系
    岩波講座ソフトウェア科学5,岩波書店,1989年
    (東工大の佐々先生の名著です.コンパイラの理論的側面を詳細にとりあげており, コンピュータサイエンスの学生から大学院生の教科書として利用できます. ルパン三世の次元大介の人形にめがねを描いた,佐々先生そっくり人形を見たことがあります.)
世界のコンパイラの教科書
  • Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman,
    Compilers - Principles, Techniues, and Tools,
    Addison-Wesley Publishers, 1986.
    (原田賢一訳,
    コンパイラI, II - 原理・技法・ツール,
    サイエンス社)
    (「ドラゴンブック」と呼ばれる世界的なコンパイラの教科書です.)
  • andre w. appel,
    modern compiler implementation in Java,
    Cambridge Unviersity Press, 1998.
    second edition published 2002.
    (「タイガーブック」と呼ばれるコンパイラの実装に特化した教科書です. modern compiler implementation in ML, modern compiler implementation in C と 3つの言語で実装していますが,著者は ML の専門家らしく, Java/C に関しては,なんだかあやしい記述がある気がします.)
  • David R. Hanson, Christopher W. Fraser,
    A Retargetable C Compiler: Design and Implementation,
    Addison-Wesley Professional, 1995.
    (lcc エルシーシー という実装が配られている,移植性の高いコンパイラを作るという内容の本. ダフのデバイス Duff's Device のコンパイル方法の記述にちょっと感動しました.)
ツールに関する本
  • John R. Levine, Tony Mason, Doug Brown,
    lex & yacc,
    A NUTSHELL HANDBOOK, O'Reilly & Associates, Inc. 1994.
    (村上列訳,
    lex & yacc プログラミング,
    アスキー出版局,1994年)
    (コンパイラコンパイラ,つまりコンパイラを生成してくれる道具のうち, 字句解析器生成系 lex および 構文解析器生成系 yacc の解説本です.)
  • Richard M. Stallman,
    Internals of GNU CC,
    Free Software Foundation, 1998.
    (岩谷宏,都田克郎共訳,
    インサイド GNU C コンパイラ,
    啓学出版.1991年.)
    (それまで高いお金を出さないと買えなかったPC用のCコンパイラが, freeで入手できるようになったというのはすごいことでした. いまはあたりまえに gcc を使っていますが. この本はちなみに gcc 1.x の頃の記述なので,現在の gcc 3.x とはほとんど別物のはずです.)
Pascalに関するリンク