この授業では、プログラミング言語についての基礎的な概念を述べたあと、普段書いているプログラムがコンピュータ内部でどのように実行されるか、またコンパイラがどのように構成されているかを説明する。
本講義を履修することによって次の能力を修得する。
1. プログラムがコンピュータ内部でどのように実行されるかを説明できる。
2. コンパイラの各構成要素の役割とその仕組み, アルゴリズムを説明できる。
3. 簡単なプログラミング言語のインタープリタやコンパイラを実装できる。
インタープリタ, コンパイラ, 構文解析, コード生成,仮想機械,ガベージコレクション
✔ 専門力 | 教養力 | コミュニケーション力 | 展開力(探究力又は設定力) | 展開力(実践力又は解決力) |
講義形式で理論や技術を学び, プログラミング課題を通じ実践力をつける.
授業計画 | 課題 | |
---|---|---|
第1回 | 概要: プログラムの実行方式(コンパイラ, インタープリタ) | プログラムの実行方式を理解する |
第2回 | 字句解析:トークン, 正規表現, NFA, DFA | 字句解析で用いられる理論を理解する |
第3回 | 字句解析: プログラミング演習 | 字句解析器の実装を理解する. |
第4回 | 構文解析(1):文脈自由文法とBNF, 予測型構文解析 | 予測型構文解析を理解する |
第5回 | 構文解析(2):LR構文解析の基礎 | LR構文解析の基礎を理解する |
第6回 | 構文解析(3):LR構文解析の拡張 | LR構文解析の拡張を理解する |
第7回 | 構文解析:プログラミング演習(1) | 構文解析器を実装する |
第8回 | 構文解析に関する理解度確認テスト及び授業後半の概要 | 構文解析の理解度を確認する |
第9回 | 仮想機械 | 仮想機械を用いた実行方式を理解する |
第10回 | ガベージコレクション | ガベージコレクションのアルゴリズムを理解する |
第11回 | 仮想機械とガベージコレクション:プログラミング演習 | 仮想機械とガベージコレクションの実装に触れる |
第12回 | コード生成(1):概要, アセンブリ言語 | コード生成の概要を理解する |
第13回 | コード生成(2):最適化 | 最適化の手法の概要を理解する |
第14回 | コード生成(3): 生存変数解析, レジスタ割当 | コード生成における発展的な話題に触れる |
第15回 | コード生成: プログラミング演習 | コード生成器を実装する |
指定しない
講義資料を適宜配付する.
次の本を参考書として使用する.
神林靖,滝本宗宏訳,最新コンパイラ構成技法,Andrew W. Appel著,神林靖,滝本宗宏訳,翔栄社.
「コンパイラ[第2版] 原理・技法・ツール」,A.V.エイホ,M.S. ラム,R.セシィ,J.D.ウルマン著,原田賢一訳,サイエンス社.
課題の得点とプログラミングに関するレポートにより評価する.
オートマトンや文脈自由文法に関する基礎的な知識を仮定する.