言語処理系

科目基礎情報

学校 有明工業高等専門学校 開講年度 平成31年度 (2019年度)
授業科目 言語処理系
科目番号 0078 科目区分 専門 / 選択
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 電子情報工学科 対象学年 5
開設期 通年 週時間数 1
教科書/教材 はじめてのコンパイラ 原理と実践、宮本衛市著、森北出版
担当教員 菅沼 明

到達目標

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

ルーブリック

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

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

学習・教育到達度目標 B-2

教育方法等

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

授業計画

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

評価割合

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