コンパイラ

科目基礎情報

学校 香川高等専門学校 開講年度 2017
授業科目 コンパイラ
科目番号 0120 科目区分 専門 / 選択
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 情報工学科(2018年度以前入学者) 対象学年 5
開設期 通年 週時間数 2
教科書/教材 中田育夫著,コンパイラ,産業図書
担当教員 河田 進

到達目標

1.字句解析の理論と方法を理解ている。
2.構文解析の理論と方法を理解している
3.目的譜生成の理論と方法を理解している

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1正規文法の原理を理解し,字句解析オートマトンの構築方法を説明でき,さらにオートマトンを構成できる字句解析オートマトンを構成できる字句解析オートマトンを構成できない
評価項目2構文解析の目的を理解し、各種解析技法を説明できる各種構文解析技法に基づく解析の流れを説明できる構文解析技法を説明できない
評価項目3解析木から効率的な目的譜を生成するための原理を理解し,その振る舞いを提示できる目的譜生成の原理を説明できる目的譜生成原理を説明できない

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

教育方法等

概要:
まず,コンパイラの処理目的・処理内容を理解し,システムプログラムとしての位置づけを理解する。さらに,コンパイラを構成する上での理論的基盤である言語理論を理解し,コンパイラがその理論的知識をどの様な目的のために利用しているかを理解する。また,コンパイラが翻訳した機械語プログラムを,コンピュータの上で動作させるために必要な知識や手続きを理解する。
授業の進め方・方法:
コンパイラは,大きく字句解析,構文解析,目的譜生成の3つに分かれている。教科書を基に,それぞれの目的,理論的知識,処理方法について講義・解説し,理解を確認・確定するために練習問題や小テスト,e-Learningを使って演習を行う。
注意点:

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 言語処理系について 高級言語とアセンブリ言語やマシン語の違いを認識し,コンパイラの3大要素の概略を理解する
2週 コンパイラの構造 コンパイラの3大要素それぞれについて入力から出力を生成する概要を理解する
3週 文法の形式的定義 バッカス記法や拡張バッカス記法にる文法の定義方法や解析木を理解する
4週 字句解析の役割 字句解析の出力出るトークンが何かを理解し,入力である文字列から取り出すための方法を理解する
5週 正規文法,正規表現 トークンを構成する文法である正規文法と正規表現を理解する
6週 有限オートマトンと字句解析譜 トークンを認識するためのプログラムである有限オートマトンを正規文法や正規表現から生成する方法を理解する
7週 NFAからDFAへの変換 曖昧さのある非決定性有限オートマトン(NFA)から曖昧さの無い決定性有限オートマトン(DFA)を生成する方法と意味を理解する
8週 DFAの最適化
試験対策
DFAから冗長なノードを削除する方法を理解する
2ndQ
9週 前期中間試験
10週 構文解析の目的と種類 構文解析の意味を再認識し,2大構文解析法である上向き構文解析法と下向き構文解析法の概略的流れを理解する
11週 順位文法の概要 上向き構文解析法である順位文法の,順位の意味を理解し,構文解析の流れを確認する
12週 順位文法の各種集合と順位表 順位文法に基づく構文解析において利用する順位表を作成するための手がかりである各種集合の意味を理解し,順位表を作成できる
13週 2重の関係の解消 順位表の不都合な要素である2重の関係を解消できる
14週 順位関数 順位表から順位関数を生成する方法を理解する
15週 LL(1)文法の概略 下向き構文解析法であるLL(1)文法の概要を理解する
16週 試験対策
後期
3rdQ
1週 LL(1)文法の各種集合 LL(1)構文解析を行うための各種集合を作成できる
2週 LL(1)文法に基づく構文解析プログラム Director集合から構文解析プログラムを作成できる
3週 LR系構文解析の概要 LR系コンパイラの内部状態とは何かを理解し,状態集合を作成できる
4週 不都合な状態とSLR(1)構文解析 不都合な状態とは何かを理解し,解決法の1つであるSLR(1)構文解析の概要を理解できる
5週 SLR(1)の各種表 SLR(1)構文解析を行うための各種表を作成できる
6週 SLR(1)の構文解析動作 SLR(1)構文解析を行うための各種表を利用し構文解析動作を模倣できる
7週 SLR(1)の各種表の最適化(1) SLR(1)構文解析動作の効率化を行うための概要を理解できる
8週 試験対策
4thQ
9週 後期中間試験
10週 SLR(1)の各種表の最適化(2) SLR(1)構文解析動作の効率化を行うために各種表を改造できる
11週 LALR(1)構文解析 不都合な状態の解決法の1つであるLALR(1)構文解析の概要を理解できる
12週 算術式の目的譜生成(1) 構文解析の出力である解析木から,使用できるレジスタが1個の場合の効率的な目的譜を生成する方法を理解できる
13週 算術式の目的譜生成(2) 構文解析の出力である解析木から,使用できるレジスタが複数の場合の効率的な目的譜を生成する方法を理解できる
14週 論理式の目的譜生成 論理式の解析木から効率的な目的譜を生成する方法を理解できる
15週 実行時の環境管理 実行可能プログラムの構造を理解し,動作時の変数や配列の割り当て法,関数妖美だ指示のスタックの利用方法などを理解できる
16週 試験対策

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週

評価割合

試験演習解答合計
総合評価割合8020100
基礎的能力401050
専門的能力401050
分野横断的能力000