到達目標
□形式言語の概念について説明できる。
□オートマトンの概念について説明できる。
□コンパイラの役割と仕組みについて説明できる。
□形式言語が制限の多さにしたがって分類されることを説明できる。
□正規表現と有限オートマトンの関係を説明できる。
□コンパイラを構成する基本的なアルゴリズムを説明できる.
□字句解析を理解でき, 簡易的な字句解析器を自作できる.
□構文解析を理解でき, 簡易的な構文解析器を自作できる.
□コード生成を理解でき, スタックマシンのコード生成器を自作できる.
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
評価項目1 | コンパイラを構成する基本的なアルゴリズムを十分に説明できる. | コンパイラを構成する基本的なアルゴリズムを説明できる | コンパイラを構成する基本的なアルゴリズムを説明できない |
評価項目2 | 字句解析を理解でき, 簡易的な字句解析器を十分に自作できる | 字句解析を理解でき, 簡易的な字句解析器を自作できる
| 字句解析を理解でき, 簡易的な字句解析器を自作できない |
評価項目3 | 構文解析を理解でき, 簡易的な構文解析器を十分に自作できる | 構文解析を理解でき, 簡易的な構文解析器を自作できる | 構文解析を理解できず, 簡易的な構文解析器を自作できない |
評価項目4 | コード生成を理解でき, スタックマシンのコード生成器を十分に自作できる | コード生成を理解でき, スタックマシンのコード生成器を自作できる | コード生成を理解できず, スタックマシンのコード生成器を自作できない |
学科の到達目標項目との関係
教育方法等
概要:
この科目では,高級言語で書かれたプログラムを機械語のプログラムに変換する『コンパイラ』の原理について学ぶ.
前期は,プログラム動作環境を提供するコンピュータの基本原理を理解し,文法の定義方法,コンパイラの初期段階に位置づけられる字句解析技法を理解する.また,字句解析プログラムを解析し,機能追加課題に取り組む.
後期は,構文解析,意味解析の手法を理解し,コード生成儀表を学ぶ.PL/0'言語を拡張したPL/H言語について,コンパイラ作成演習をおこない,理解を深める.
授業の進め方・方法:
講義はkeynoteのスライドで行う.スライドは印刷資料を事前に配布するが,要所を抜いてあるので,授業に集中し穴埋めを補充すること.
講義と実習を交互に行うスパイラル方式で進める.
教科書掲載のPL/0' コンパイラをベースに,機能拡張したPL/H言語コンパイラを自分で動かしてみる中で,コンパイラの原理を理解する.
注意点:
授業関連サイト:http://www.ice.gunma-ct.ac.jp/̃kimsyn/subject/SYSPRO_4J/
予習の必要はないが,復習はしっかりおこない,課題には自ら取り組むことが重要.
授業の属性・履修上の区分
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
コンパイラの概要 |
コンピュータとプログラムの関係 コンパイラの概要・高級言語の位置づけ
|
2週 |
コンパイラの概要 |
プログラムと処理系の図式表示方法 変換系と通訳系
|
3週 |
コンパイラの基礎 |
後置記法
|
4週 |
コンパイラの基礎 |
スタック 論理的構造・物理的構造
|
5週 |
中間テスト1 |
|
6週 |
言語と文法 |
バッカス記法
|
7週 |
言語と文法 |
構文グラフ
|
8週 |
中間テスト2 |
|
2ndQ |
9週 |
言語と文法 |
文法と言語の形式的定義
|
10週 |
言語と文法 |
解析木
|
11週 |
言語と文法 |
PL/0'言語とPL/H言語
|
12週 |
中間テスト3 |
|
13週 |
字句解析 |
文字読取り処理・字句解析 正規表現
|
14週 |
字句解析 |
非決定性オートマトンと決定性オートマトン
|
15週 |
期末試験 |
|
16週 |
字句解析 |
字句読取りプログラムの解析
|
後期 |
3rdQ |
1週 |
下向き構文解析 |
下向き構文解析とその問題点
|
2週 |
下向き構文解析 |
LL(1)文法
|
3週 |
下向き構文解析 |
再帰下向き構文解析プログラム
|
4週 |
中間テスト1 |
|
5週 |
下向き構文解析 |
再帰下向き構文解析プログラム
|
6週 |
下向き構文解析 |
文法から再帰下向き構文解析プログラムへ
|
7週 |
下向き構文解析 |
PL/0'の再帰下向き構文解析プログラム
|
8週 |
中間テスト2 |
|
4thQ |
9週 |
意味解析 |
意味解析とは 記号表の情報
|
10週 |
意味解析 |
記号表の探索
|
11週 |
意味解析 |
ブロック構造と記号表・PL/0'の記号表
|
12週 |
中間テスト3 |
|
13週 |
仮想マシンと通訳系 |
仮想マシンの機能 仮想マシン語への変換
|
14週 |
仮想マシンと通訳系 |
仮想マシンの実現 PL/0'マシンとPL/0'の目的コード PL/Hマシン
|
15週 |
期末テスト |
|
16週 |
答案返却 |
|
評価割合
| 試験 | 課題・レポート | 合計 |
総合評価割合 | 80 | 20 | 100 |
基礎的能力 | 40 | 10 | 50 |
専門的能力 | 40 | 10 | 50 |