コンパイラ(Compiler)
(オートマトンと言語理論(Automata and Languages, 平成20年度以前入学者))


講義情報

授業科目の区分 専門科目
講義番号 093017(情報系学科)/094835(情報工学科,平成21年度以降入学者)/ 094703(情報工学科,平成20年度以前入学者)
授業科目 コンパイラ(平成21年度以降入学者) / オートマトンと言語理論(平成20年度以前入学者)
対象学生 情報系学科2年次(情報工学科2年次)
単位数 2単位
選択・必修の別 選択(平成21年度以降入学者) / 選択必修(平成20年度以前入学者)
学期・曜日・時限 後期・月曜日・3限
講義室 11講義室
概略 プログラミング言語における基礎的な概念および形式化について述べ, プログラミング言語処理系の概要と構成・実現法を講述する。 特に,プログラミング言語をアセンブリ言語/機械語に変換する 変換系(コンパイラ)における基本的な技術である字句解析, 構文解析,意味解析,コード生成を中心に講述する。
一般目標 コンパイラの役割,基本的な概念,機能,理論的な背景,構造, 実現方式について学習する.
個別目標 1. コンパイラの基本的な機能と構成を理解する
2. 字句解析,構文解析を通した形式的な言語処理を理解する
3. コード生成を通してコンピュータアーキテクチャやオペレーティングシステムの理解を深める
受講要件 一つ以上のコンパイル型言語を知っていること.
履修上の注意 帰納的な定義や、抽象的定義に慣れ親しむこと
成績評価基準 出席状況,演習課題,期末試験などにより総合的に評価する.
教材 (教科書): 湯淺太一: コンパイラ ― 情報系教科書シリーズ ―(オーム社)
(参考図書)
中田育男:コンパイラ ― 新コンピュータサイエンス講座 ― (オーム社)
David A. Patterson, John L. Hennessy:コンピュータの構成と設計 ハードウエアとソフトウエアのインタフェース 第4版(2011年出版) 上巻および下巻(日経BP社)
連絡先 E-mail: lect-compiler(at)arc.cs.okayama-u.ac.jp
(E-mail アドレスの (at) の部分は半角の@に置き換えて送信のこと)
備考 情報工学実験第二(コンパイラ設計実験)の履修に必要な知識を講義するため, 履修することを強く勧める.

平成26年度 工学部 情報系学科 シラバス


授業計画(2014年度版)

講義日 授業内容
110/ 6 (月) 授業の概説とコンパイラの概要
2 10/16 (木) 字句解析(1)
310/20 (月) 字句解析(2)
410/27 (月) 文法
5 11/6 (木) 構文解析(1)
611/10 (月) 構文解析(2)
711/17 (月) 構文解析(3)
812/ 1 (月) 構文解析(4)/前半のまとめ・復習
912/ 8 (月) 意味解析
1012/15 (月) コード生成(1)
1112/22 (月) コード生成(2)
12 1/ 5 (月) 最適化
13 1/19 (月) コンパイラに関連するトピック
14 1/26 (月) 復習等
15 2/9 (月) 期末試験
(10月16日(木)は月曜日の授業)
(11月 6日(木)は月曜日の授業)
( 1月 5日(月)は冬季休業日であるが授業を行う)

講義資料等

(注意) 演習室プリンタで大量に印刷すると, 印刷枚数の制限に達し演習等に支障をきたすことがあるので注意のこと.

自宅PC等からアクセスできない場合は, 下記にアクセス元のドメイン(または,IPアドレス※)を連絡のこと.

compiler-request(at)arc.cs.okayama-u.ac.jp
(「(at)」は半角文字の「@」に置き換えて送信のこと)

(※)IPアドレスはグローバルIPアドレスを連絡のこと. プライベートIPアドレスを連絡されても, そのアドレスからの通信を許可することはできない.


演習課題


コンパイラ関連の参考図書

[Aho 77] Alfred V. Aho and Jeffrey D. Ullman: Principles of Compiler Design, Addison-Wesley, 1977
(訳本: 土井範久訳, コンパイラ,培風館,1986)
[Aho 86] Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman: Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986
(訳本: 原田賢一訳,コンパイラI, II(原理・技法・ツール),サイエンス社,1990)
[Aoki 09] 青木峰郎: ふつうのコンパイラをつくろう (言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み), ソフトバンク クリエイティブ,2009
[Appel 97] Andre W. Appel: Modern Compiler Implementation in Java, Cambridge University Press, 1997
(Second editionがある, ML版の翻訳本「 最新コンパイラ構成技法」もある)
[Chiba 12] 千葉滋: 2週間でできる! スクリプト言語の作り方, 技術評論社,2012
[Harada 99] 原田賢一: コンパイラ構成法, 共立出版,1999
[Hayashi 10] 林晴比古: 明快入門コンパイラ・インタプリタ開発, ソフトバンク クリエイティブ,2010
[Imajyo 04] 今城 哲二・布広 永示・岩澤 京子・千葉 雄司: コンパイラとバーチャルマシン, オーム社,2004
[JVM 99] Tim Lindholm and Frank Yellin: `` The Java Virtual Machine Specification (Second Edition)'', Sun Microsystems,1999
[Kakugawa 08] 角川裕次: Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念, 森北出版,2008
[Kashiwagi 13] 柏木餅子,風薬: きつねさんでもわかるLLVM 〜コンパイラを自作するためのガイドブック〜, インプレスジャパン,2013
[Miyamoto 07] 宮本衛市: はじめてのコンパイラ, 森北出版,2007
[Muchnick 97] Steven S. Muchnick: Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997
[Nakata 81] 中田育男: コンパイラ, 産業図書,1981
[Nakata 08] 中田育男,渡邊坦,佐々政孝,滝本宗宏: コンパイラの基盤技術と実践, 朝倉書店,2008
[Nakata 09] 中田育男: コンパイラの構成と最適化(第2版), 朝倉出版,2009
[Saotome 92] 五乙女健治: yacc/lex プログラムジェネレータ on UNIX, 啓学出版,1992
[Sassa 89] 佐々政孝: プログラミング言語処理系, 岩波書店,1989
[Srikant 03] Y.N Srikant, P. Shankar (ed.): The Compiler Design Handbook, Optimizations and Machine Code Generation, CRC Press, 2003
[Yuasa 01] 湯淺太一: コンパイラ, 昭晃堂,2001