科目名 コンパイラ
単位数 2.0
担当者 情報工学専攻 講師 川端 英之
履修時期 前期
履修対象 3年
概要 ユーザの記述したプログラムを「計算機の言葉」に翻訳するツールであるコンパイラは,コンピュータシステムの構成において最も重要な役割を果たすソフトウェアの一つである.本講義では,コンパイラの仕組みや構成要素について,理論的側面から実装まで,基本事項を具体的に学ぶ.(授業形態:講義)
科目の到達目標 コンパイラは,コンピュータのハードウェア,オペレーティングシステム,プログラミング言語の理論などと密接に関連するソフトウェアシステムである.本講義では,コンパイラの学習を通して,コンピュータシステム全体に対してのより深い理解を得ることを目指す.
受講要件 コンピュータシステムに関する基礎概念の理解と,プログラミングの経験があることが望ましい.すなわち,「コンピュータ基礎」や「プログラミングI」の内容をある程度理解していることが望ましい.
事前・事後学修の内容 事前学習:教科書や配布資料の当該範囲を読み,概要を把握しておく.
事後学習:教科書や配布資料の当該範囲を読み,授業中に行った内容を振り返る.
講義内容 1.イントロダクション:コンパイラの概要とその周辺
2.高水準言語,アセンブリ言語,およびプログラムの実行環境の概要
3.字句解析(正規表現とDFA)
4.字句解析(字句解析プログラムの実装と応用)
5.構文解析(文法と構文解析)
6.構文解析(再帰的下向き構文解析)
7.構文解析(LL(1)文法)
8.構文解析(LL(1)構文解析,抽象構文木)
9.前半のまとめ
10.C言語プログラムの構成方式
11.意味解析(名前とオブジェクトの対応付け)
12.意味解析(スコープ,型検査)
13.意味解析とコード生成
14.コード生成で用いられる技法(制御フロー変換,レジスタ割り付け)
15.プログラムの実行環境(メモリ管理,OSとの連携)

※講義室での講義と,演習室でのプログラミング演習を含む講義を,ほぼ交互に行う.
 (初回の講義室については掲示で連絡)
※試験期間に別途期末試験を実施する.
評価方法 コンパイラを構成する個々の概念について,機能や相互の関連の理解度を,プログラミング課題や授業中の演習,学期中の試験および期末試験の結果を総合して評価する.およその基準は次の通り:
秀:コンパイラの構造を十分に理解し,効率的な実装方式や質の良いコード生成に関して議論できる.
優:コンパイラの構造を十分に理解し,簡単なプロトタイプを記述できる力を持つ.
良:コンパイラを構成する個々の機能単位と相互の連携について,理解している.
可:コンパイラの構成する個々の機能単位に関して,役割を理解している.
教科書等 教科書: 湯浅太一著: コンパイラ, オーム社, 2014. (昭晃堂で2001年から出版されていたものと同じ内容)
参考書: A.V. Aho 他著, 原田賢一訳, コンパイラ(I, II), サイエンス社, 1990.
    中田育男著: コンパイラの構成と最適化, 朝倉書店, 1999.
    A.W. appel著, 神林・滝本訳, 最新コンパイラ構成技法, 翔泳社, 2009.
資料はWebでも提供する(URLは別途指示).
担当者プロフィール プログラミング言語処理系,数値処理プログラミング,関連するツールやライブラリ開発などに関する研究に従事しています.
授業内容や宿題などに関する,学生の個別学習相談を随時受け付けています.小さなことでも遠慮なくどうぞ.(研究室:情報科学部棟5階541号室,E-mail:kawabata@hiroshima-cu.ac.jp)
備考 【教職】高一種(情報)