到達目標
コンパイラの基礎的な理論である構文解析手法を理解する。また、小さなコンパイラのプログラムを題材として、字句解析からコード生成までのコンパイラの内部構造を理解する。
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
コンパイラの構成 | コンパイラの構成について詳細に理解できる | コンパイラの構成について理解できる | コンパイラの構成について理解できない |
構文解析手法 | トップダウン,ボトムアップ構文解析の手法を理解し、実際のプログラムとして実装できる | トップダウン,ボトムアップ構文解析の手法を理解できる | トップダウン,ボトムアップ構文解析の手法を理解できない |
コンパイラプログラムの実装 | トップダウン構文解析手法にもとづく小さなコンパイラに対して言語機能の拡張ができる | トップダウン構文解析手法にもとづく小さなコンパイラの処理内容を理解できる | トップダウン構文解析手法にもとづく小さなコンパイラの処理内容を理解できない |
学科の到達目標項目との関係
JABEE B-2 専門分野の知識と能力
準学士課程 2(2) 専門分野の知識と能力
教育方法等
概要:
字句解析、構文解析の理論とともに、小さなコンパイラのプログラムを通じて具体的な処理内容を学ぶ。
授業の進め方・方法:
字句解析、構文解析の理論については座学および机上の演習によって学ぶ一方、小さなコンパイラを題材として実際のプログラムを読んだり書いたりする演習によってコンパイラの内部を理解する。
注意点:
字句解析、構文解析等の理論を理解することと同時に、本講義では提示された例題プログラムの読解やコーディングも多く要求されるので、プログラミング能力を高める機会とすること。
自学自習について:
学習単位Aの科目であり、次の自学自習を行うこと。
①授業90分に対して教科書でそれぞれ90分以上の予習、復習を行うこと。
②随時小レポート課題を課すので予習、復習に役立てること。
③計算機を用いる実習課題は、自学自習時間も利用して取り組むこと。
オフィスアワー(本科目についての質問、相談):
学生は、放課後等に教員室へ質問に来ることができる。あらかじめ、電子メール等で事前調整することが望ましい。
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
コンパイラの基礎概念 |
インタプリタとコンパイラ各方式、典型的なコンパイラの構成を理解する。
|
2週 |
コンパイラの基礎概念 |
字句解析、構文解析の理論がコンパイラの基礎的な理論であることを理解する。
|
3週 |
文法の記述 |
BNFによる文法記述の方法を理解する。
|
4週 |
文法の記述 |
BNFによってC言語の文法の一部を記述する方法を理解する。
|
5週 |
最長一致による字句解析 |
最長一致による字句解析プログラムの構成方法を理解する。
|
6週 |
有限オートマトン |
有限オートマトンと正規文法の基礎を理解する。
|
7週 |
有限オートマトン |
非決定性有限オートマトンを等価な決定性有限オートマトンに変換できることを理解する。
|
8週 |
前期中間試験 |
|
2ndQ |
9週 |
有限オートマトンによる字句解析 |
有限オートマトンを用いた字句解析の手法を理解する。
|
10週 |
下向き構文解析 |
下向き構文解析がトップダウンに構文解析木を生成する過程を理解する。
|
11週 |
再帰的下向き構文解析プログラム |
生成規則に対応する解析プログラムの作り方を理解する。
|
12週 |
電卓プログラム演習 |
四則演算からなる式を解析する電卓プログラムの構成を理解する。
|
13週 |
電卓プログラム演習 |
電卓プログラムのコードを実際に記述できるようになる。
|
14週 |
識別子管理 |
ハッシュ、2分木による識別子管理の手法を理解する。
|
15週 |
実行時の計算環境 |
一般的なコンパイラにおけるメモリ領域の割り付けについて理解する。
|
16週 |
|
|
後期 |
3rdQ |
1週 |
コード生成 |
一般的なコンパイラにおけるコード生成の方法について理解する。
|
2週 |
コード生成 |
スタックを用いたローカル変数の生成、関数呼出しの実現方法について理解する。
|
3週 |
仮想スタックマシン |
スタック演算を行う仮想マシンの構成と命令を理解する。
|
4週 |
仮想スタックマシン |
逆ポーランド記法を理解し、スタックマシン上で式を計算する手順を理解する。
|
5週 |
pico Cコンパイラ演習 |
式や変数に対して、適切な仮想計算機コードを出力できる。
|
6週 |
pico Cコンパイラ演習 |
IF文、WHILE文に対する適切な構文解析、仮想計算機命令を出力できる。
|
7週 |
pico Cコンパイラ演習 |
制御構造を追加して、その部分の構文解析とコード生成のプログラムを書けるようになる。
|
8週 |
後期中間試験 |
|
4thQ |
9週 |
LR構文解析の基礎 |
LR構文解析がボトムアップに解析木を生成する過程を理解する。
|
10週 |
SLR構文解析表 |
文法定義からSLR構文解析表を構成する方法を理解する。
|
11週 |
SLR構文解析の動作 |
具体的な文法に対して、SLR構文解析の処理過程をシミュレートできるようになる。
|
12週 |
LALR/正準LR構文解析 |
還元動作の判断基準によるLR構文解析の種類と各手法の特徴を理解する。
|
13週 |
LALR/正準LR構文解析 |
SLRとの対比でLALR、正準LRの各解析手法を理解する。
|
14週 |
コンパイラコンパイラ演習 |
コンパイラコンパイラを用いて構文解析プログラムを生成する方法を習得する。
|
15週 |
コンパイラコンパイラ演習 |
コンパイラコンパイラを用いて簡単な構文解析プログラムを作成できるようになる。
|
16週 |
|
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系 | システムプログラム | 形式言語の概念について説明できる。 | 3 | 前1,前3,前10,後9,後15 |
オートマトンの概念について説明できる。 | 3 | 前1,前3,前6,前9 |
コンパイラの役割と仕組みについて説明できる。 | 3 | 前1,前10,前11,後1,後2,後9,後10,後11 |
評価割合
| 試験 | レポート | 合計 |
総合評価割合 | 80 | 20 | 100 |
知識 | 60 | 0 | 60 |
実践的能力 | 20 | 20 | 40 |