コンパイラ(言語処理系基礎)
担当教員
授業の到達目標及びテーマ
コンパイラをはじめとする計算機言語処理系は、情報科学の分野でもっとも重要なソフトウェアの一つである。本講義では、コンパイラの基本概念について説明するとともに、コンパイラの各構成要素における理論と技法について説明する。また、簡単な言語に対するコンパイラの実現を例題として、コンパイラの全体像を理解を深める。
授業の概要と方法
コンパイル処理は、いくつかのフェーズ(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, ネットワーク接続、授業支援システム利用
前年度の授業改善アンケートからの気づき
質問の時間を多めにとる。