コンパイラ

科目基礎情報

学校 有明工業高等専門学校 開講年度 令和02年度 (2020年度)
授業科目 コンパイラ
科目番号 5I007 科目区分 専門 / 選択
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 創造工学科(情報システムコース) 対象学年 5
開設期 後期 週時間数 後期:1
教科書/教材 コンパイラ;中田育男監修、中井央著/コロナ社
担当教員 菅沼 明

到達目標

1. コンパイラの処理の各フェーズにおける用語を説明できる
2. コンパイラの処理の各フェーズで使われる文法記述を読むことができる
3. コンパイラの処理の各フェーズに関して処理手順を説明できる

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1コンパイラの処理の各フェーズにおける用語を詳細に説明できる。コンパイラの処理の各フェーズにおける用語を説明できる。コンパイラの処理の各フェーズにおける用語を説明できない。
評価項目2コンパイラの処理の各フェーズで使われる文法を正確に説明でき、記述できる。コンパイラの処理の各フェーズで使われる文法記述を説明できる。コンパイラの処理の各フェーズで使われる文法記述を読むことができない。
評価項目3コンパイラの処理の各フェーズに関して処理手順を説明でき、文法記述から処理手順を生成することができる。コンパイラの処理の各フェーズに関して処理手順を説明できる。コンパイラの処理の各フェーズに関して処理手順を説明できない。

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

学習・教育到達度目標 B-2 説明 閉じる

教育方法等

概要:
プログラマは、通常、人間の言葉に近いプログラミング言語(例:C言語)を用いてプログラムを作成する。しかし、コンピュータが直接実行できるのは機械語のプログラムだけである。したがって、機械語以外の言語で作成されたプログラムは、機械語のプログラムに翻訳する必要がある。この翻訳を行うのがコンパイラやインタプリタなどの言語処理系である。言語処理系は、現在のソフトウェア開発環境において、重要かつ欠くことのできない基本的なソフトウェア群である。本授業では、言語処理系の中でも重要な位置を占める「コンパイラ」に関する技術を解説する。
授業目標は次の2点である。第1の目標は、コンパイラの全体構造と各部の役割を理解することである。第2の目標は、コンパイラの各部が行う処理を把握し、そこで行われている基本技術を学ぶことである。コンパイラの各部を実現するための技法やアルゴリズムは他のソフトウェア開発でも利用できる。
授業の進め方・方法:
板書と資料を使って授業を進めていく。
注意点:
内容の理解と定着をはかるため、課題に取り組む時間が必要である。

授業計画

授業内容 週ごとの到達目標
後期
3rdQ
1週 ガイダンス、プログラミング言語 各種プログラミング言語の特徴を理解できる。
2週 コンパイラとインタプリタ、コンパイラの論理的構造と物理的構造 コンパイラとインタプリタの違いを理解できる。
論理的構造の各フェーズで行う処理の概要を理解できる。
物理的構造の特徴を理解できる。
3週 言語と形式文法(BNF表記、構文図式) BNF表記の記述法を理解し、プログラム言語の文法の一部をBNF表記で記述できる。BNFの記述された文法を構文図式で記述できる。
4週 言語と形式文法(あいまいな文法,あいまいでない文法、句構造文法、文脈依存文法、文脈自由文法、正規文法) あいまいな文法の特徴を説明できる。句構造文法、文脈依存文法、文脈自由文法、正規文法の特徴を説明できる。プログラミング言語の文法は正規文法、文脈自由文法で記述できることを理解できる。
5週 字句解析(字句解析の処理の概要、トークン) 字句解析の処理の概要を理解できる。トークンの特徴を説明できる。
6週 字句解析(正規表現とオートマトン) 字句解析の処理内容を説明できる。トークンを検出できる理屈を理解できる。正規表現から非決定性有限オートマトンを機械的に生成できることを理解できる。
7週 字句解析(決定性オートマトンの作成と動作のトレース) 正規表現から決定性有限オートマトンを生成できる。
決定性オートマトンの動作をトレースし、プログラムを字句解析する処理を机上で実行できる。
8週 中間試験
4thQ
9週 テスト返却と解説、構文解析(文脈自由文法) プログラムの構文を記述するには文脈自由文法を使うことを理解する。
10週 構文解析(LL(1)文法、再帰的下向き構文解析) LL(1)文法の特徴を理解する。
再帰的下向き構文解析の処理の特徴を理解する。
First集合、Follow集合、Director集合の意味を理解する。
11週 構文解析(再帰的下向き構文解析) LL(1)文法からFirst集合、Follow集合、Director集合を求め、構文解析表を作成することができる。
12週 構文解析(上向き構文解析) 上向き構文解析の特徴を理解する。上向き構文解析の動作をトレースし、どのように構文木が作られるかを示すことができる。
13週 意味解析(名前表の構造と探索) 意味解析の必要性を理解する。名前表の必要性を説明できる。名前表に保持するデータの特徴を理解する。名前表の構造の特徴を理解する。
名前表にデータを登録する手法、名前表からデータを探索する手法を理解する。変数のスコープを実現する手法を理解する。
14週 コード生成(中間コードの生成、最適化) 中間コードの必要性を理解する。
中間コードにどのようなものがあるかを説明できる。
構文木から中間コードを生成する手法を理解する。
コードの最適化の考え方を理解する。
15週 期末試験
16週 テスト返却と解説

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。4後7,後11,後12,後13
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。4後12,後13
変数の概念を説明できる。4後7,後11,後12,後13
データ型の概念を説明できる。4後7,後11,後12,後13
制御構造の概念を理解し、条件分岐を記述できる。4後6,後7,後11,後12
制御構造の概念を理解し、反復処理を記述できる。4後6,後7,後11,後12
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4後6,後7
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4後6,後7
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。4後6,後7,後10,後12
主要な言語処理プロセッサの種類と特徴を説明できる。4後1,後2
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。4後1,後2,後5,後9,後13,後14
ソフトウェアアルゴリズムの概念を説明できる。4後5,後9,後10,後13,後14
与えられたアルゴリズムが問題を解決していく過程を説明できる。4後6,後7,後10,後11,後12,後13,後14
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4後10,後11,後12
整列、探索など、基本的なアルゴリズムについて説明できる。4後6,後10,後13
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4後6,後7,後11,後12,後13
システムプログラム形式言語の概念について説明できる。4後3,後4,後6,後9,後10,後11,後12
オートマトンの概念について説明できる。4後6,後7
コンパイラの役割と仕組みについて説明できる。4後2,後5,後9,後10,後11,後12,後13,後14
形式言語が制限の多さにしたがって分類されることを説明できる。4後4,後10,後11,後12
正規表現と有限オートマトンの関係を説明できる。4後6,後7

評価割合

試験発表相互評価態度ポートフォリオその他合計
総合評価割合80000200100
基礎的能力0000000
専門的能力80000200100
分野横断的能力0000000