コンパイラ(言語処理系基礎)

担当教員

授業の到達目標及びテーマ

 コンパイラをはじめとする計算機言語処理系は、情報科学の分野でもっとも重要なソフトウェアの一つである。本講義では、コンパイラの基本概念について説明するとともに、コンパイラの各構成要素における理論と技法について説明する。また、簡単な言語に対するコンパイラの実現を例題として、コンパイラの全体像を理解を深める。

授業の概要と方法

 コンパイル処理は、いくつかのフェーズ(Phase)と呼ばれるプロセスで構成される。各フェーズの実装方法は、オートマトンをはじめとする言語の理論によって裏付けられている。講義前半(第1~9回)では、各フェーズに対して、(1)フェーズを裏付ける理論の学習、(2)理論に対するプロセスの実装方法(アルゴリズム)の学習、というステップで理解を深めていく。講義後半では、前半で学んだそれぞれのフェーズを統合することで、一つのコンパイラを構成できることを学ぶ。

授業計画

テーマ内容
1 導入 コンパイラと計算機言語処理系の概要
2 言語と文法 文脈自由文法と解析木
3 字句解析 正規表現とオートマトンによる字句解析の定式化
4 字句解析器の実装 字句解析プログラムの導出
5 構文解析 下向き構文解析
6 構文解析器の実装 再帰降下構文解析器の導出
7 意味解析 名前の解決処理、型、静的意味検査
8 中間コード生成 中間コードの種類と生成の基礎
9 まとめ(コンパイラフロントエンド) コンパイラフロントエンドの全体像
10 実行時環境 実行時期億、活性レコード(関数フレーム)、手続き呼び出しのプロセス
11 通訳系(インタプリタ) VM(Virtual Machine)
12 コンパイラの実装(1) 式のコンパイル
13 コンパイラの実装(2) 変数機能の実現
14 コンパイラの実装(3) 制御構造のコンパイルと関数機能の実現
15 まとめ 総括

授業外に行うべき学習活動

各回では配布する資料を読み授業に備える。また、資料内の例題プログラムは事前に入力し実行すること。授業後は、課題のプログラミングおよびレポート作成に取り組む。

テキスト

担当教員が作成したオンラインテキストおよび配布する印刷物

参考書

中田育男、コンパイラの構成と最適化、(1999)、朝倉書店 佐々政孝、プログラミング言語処理系、(1989)、岩波書店

成績評価基準

 期末試験(60%)  授業期間中に出題するレポート問題の達成度(40%)

情報機器使用

 あり: 貸与ノートPC, ネットワーク接続、授業支援システム利用

前年度の授業改善アンケートからの気づき

 質問の時間を多めにとる。