コンパイラ

科目基礎情報

学校 豊田工業高等専門学校 開講年度 平成31年度 (2019年度)
授業科目 コンパイラ
科目番号 95018 科目区分 専門 / 選択
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 情報科学専攻 対象学年 専2
開設期 後期 週時間数 2
教科書/教材 「コンパイラ」中井央著(コロナ社)ISBN:978-4339027082/「コンパイラ: 作りながら学ぶ」中田育男著(オーム社)ISBN:978-4274221163、「lex&yaccプログラミング」村上列訳(アスキー出版)ISBN:978-4756102973
担当教員 江﨑 信行

到達目標

(ア)コンパイラの基礎的な概念、その構成を理解する。
(イ)簡単なコンパイラの例として記法の変換を理解し、プログラムを作成できる。
(ウ)文法と言語についてその考え方を理解し、文法をバッカス記法で定義し、構文図式で表現できる。
(エ)字句解析と正規表現を理解し、字句読み取りプログラムをlexを用いて作成できる。
(オ)構文解析と文法を理解し、与えられた文法に対する簡単な例文とその解析木を作成できる。
(カ)構文解析と文法を理解し、yaccによる構文解析プログラムを作成できる。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1コンパイラを設計する上で必要な知識として、形式言語の概念について説明できる。形式言語の概念について説明できる。形式言語の概念について説明できない。
評価項目2コンパイラを設計する上で必要な知識として、正規表現と有限オートマトンの関係を説明できる。正規表現と有限オートマトンの関係を説明できる。正規表現と有限オートマトンの関係を説明できない。
評価項目3コンパイラの役割と仕組みを理解し、簡易的なコンパイラを設計・実現できる。コンパイラの役割と仕組みについて説明できる。コンパイラの役割と仕組みについて説明できない。

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

学習・教育到達度目標 A2 ソフトウェア開発において,数理的理論に基づくスマートな設計ができるとともに,ハードウェアの基本動作を意識した設計ができる.
JABEE d 当該分野において必要とされる専門的知識とそれらを応用する能力
本校教育目標 ① ものづくり能力

教育方法等

概要:
コンピュータシステムにおけるソフトウェアの基本的な要素(システムプログラム)の代表的な例である言語翻訳プログラム(コンパイラ)を取り扱う。本科目は文法や言語に関する基礎知識の復習から始めて、コンパイラの基礎的な概念やその構成を学ぶ。さらにコンパイラの設計法を演習を通じて理解を深める。
授業の進め方・方法:
注意点:
計算機言語論A,B、形式言語理論を修得していることが望ましい。継続的に授業内容の予習・復習を行うこと。

授業計画

授業内容 週ごとの到達目標
後期
3rdQ
1週 シラバスを用いた授業内容の説明、コンパイラとは、コンパイラの基礎的な概念(復習:プログラム言語の歴史) コンパイラの役割と仕組みを理解する。
2週 コンパイラの構成:変換系と通訳系、T図式、I図式(復習:T図式、I図式、予習:記法の変換) コンパイラの仕組みをT図式で表現できる。
3週 簡単なコンパイラの例:記法の変換、後置記法、中置記法、同プログラミング演習(復習:四則演算コンパイラ設計) 簡単なコンパイラを理解する。
4週 簡単なコンパイラの例:記法の変換、後置記法、中置記法、同プログラミング演習(復習:四則演算コンパイラ設計) 簡単なコンパイラをプログラミングできる。
5週 文法と言語:バッカス記法、構文図式(復習:文法と言語の表現方法) 形式言語の概念を理解する。
6週 文法と言語:バッカス記法、構文図式(復習:文法と言語の表現方法) 形式言語のうち、文脈自由文法を理解する。
7週 yaccとlex(復習:yacc、lexのプログラミング) 簡単なコンパイラをyaccとlexを用いて作成できる。
8週 字句解析:正規表現と有限オートマトン(復習:プログラム言語の字句解析) 正規表現と有限オートマトンの関係を理解する。
4thQ
9週 lexによる字句解析演習(復習:lexのプログラミング) lexを用いて字句解析器を記述できる。
10週 構文解析:構文解析の種類、下向き構文解析(復習:構文解析の歴史と種類) 構文解析の種類を理解する。
11週 yaccによる構文解析演習(復習:yacc、lexのプログラミング) yaccを用いて構文解析器を記述できる。
12週 意味解析:記号表と探索、プログラムの意味誤り(復習:記号表の設計) 意味解析を理解する。
13週 仮想計算機と仮想中間言語(復習:仮想計算機の設計、コーディング、予習:コンパイラ設計) 仮想計算機と仮想中間言語を理解する。
14週 コンパイラ設計プログラミング演習(復習:総合的なプログラミング) コンパイラを設計・実現できる。
15週 コンパイラ設計プログラミング演習(復習:総合的なプログラミング) コンパイラを設計・実現し、評価できる。
16週

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

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

評価割合

定期試験合計
総合評価割合100100
専門的能力100100