言語処理系

科目基礎情報

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

到達目標

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

ルーブリック

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

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

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

教育方法等

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

授業計画

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

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

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

評価割合

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