言語処理系

科目基礎情報

学校 木更津工業高等専門学校 開講年度 2016
授業科目 言語処理系
科目番号 0016 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 学修単位: 3
開設学科 情報工学科 対象学年 4
開設期 通年 週時間数 1.5
教科書/教材 宮本衛市著『はじめてのコンパイラ・原理と実践』森北出版、2007年、2520円(税込) (参考図書)Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman “ Compilers”, Pearson Education, 2007
担当教員 丸山 真佐夫

到達目標

コンパイラの基礎的な理論である構文解析手法を理解する。また、小さなコンパイラのプログラムを題材として、字句解析からコード生成までのコンパイラの内部構造を理解する。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
コンパイラの構成コンパイラの構成について詳細に理解できるコンパイラの構成について理解できるコンパイラの構成について理解できない
構文解析手法トップダウン,ボトムアップ構文解析の手法を理解し、実際のプログラムとして実装できるトップダウン,ボトムアップ構文解析の手法を理解できるトップダウン,ボトムアップ構文解析の手法を理解できない
コンパイラプログラムの実装トップダウン構文解析手法にもとづく小さなコンパイラに対して言語機能の拡張ができるトップダウン構文解析手法にもとづく小さなコンパイラの処理内容を理解できるトップダウン構文解析手法にもとづく小さなコンパイラの処理内容を理解できない

学科の到達目標項目との関係

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週

評価割合

試験レポート合計
総合評価割合8020100
知識60060
実践的能力202040