コンパイラに関する基礎項目である,字句解析,構文解析,意味解析,最適化,コード生成について,学び,その内容を理解し,説明ができるようになることを目標とする。
概要:
コンパイラは,高水準のプログラミング言語をマシン語の命令列に変換し出力するソフトウェアである。この講義では,コンパイラを構成する各フェーズが,どのような理論に基づいて実装されているかを学ぶ。
授業の進め方・方法:
座学による講義形式を基本とする。必要に応じて演習も行う。
注意点:
【成績評価の基準・方法】
試験の成績を60%、平素の学習状況を40%の割合で総合的に評価する。技術者が身につけるべき専門知識として、上記の到達目標に対する達成度を試験等において評価する。
【事前・事後学習】
事前学習として配布した教材を読んだ上で、理解が難しかった部分を整理して授業に臨むこと。また、事後学習として授業内で提示した課題・演習問題に取り組み提出すること。
【学習単位科目(授業時間外の学習時間等)】
本科目は学習単位のため、以下の標準学習時間を指定した自主学習を累計45時間分以上実施して提出しなければ、成績が60点を超えた場合でも59点として扱い単位を認定しない。
・全15回の授業に対して、0.5時間の事前学習と1.5時間の事後学習(課題含む)。計30時間分以上。
・中間試験および期末試験に対してそれぞれの試験勉強のための課題学習4時間。計8時間分。
【履修上の注意】
この科目を履修するにあたり、3年生科目の「アルゴリズムとデータ構造」4年生科目の「アセンブリⅠ」「グラフとオートマトン」の内容を十分に理解しておくこと。
|
|
週 |
授業内容 |
週ごとの到達目標 |
後期 |
3rdQ |
1週 |
序論:言語処理系,コンパイラの構造を概観する。 |
言語処理系,コンパイラの構造の概要が理解できる。
|
2週 |
字句解析:字句解析,正規表現,有限オートマトン等について学ぶ。 |
字句解析,正規表現,有限オートマトン等が理解できる。
|
3週 |
構文解析(1):構文解析とは何か。文脈自由文法について学ぶ。 |
構文解析とは何か。文脈自由文法が理解できる。
|
4週 |
構文解析(2):導出木と解析木,下向き構文解析について学ぶ。 |
導出木と解析木,下向き構文解析が理解できる。
|
5週 |
構文解析(3):LL(1)文法について学ぶ。 |
LL(1)文法が理解できる。
|
6週 |
構文解析(4):文法の変換,LL(1)判定について学ぶ。 |
文法の変換,LL(1)判定が理解できる。
|
7週 |
構文解析(5):上向き構文解析,LR(1)文法,構文解析ツールについて学ぶ。 |
上向き構文解析,LR(1)文法が理解でき,使用可能な構文解析ツールを知っている。
|
8週 |
意味解析(1):意味解析とは何か。中間表現の種類について学ぶ。 |
意味解析の内容と中間表現が理解できる。
|
4thQ |
9週 |
意味解析(2):構文主導翻訳,後置表記計算等について学ぶ。 |
構文主導翻訳,後置表記計算等が理解できる。
|
10週 |
意味解析(3):制御文の命令列への翻訳,手続きの動作と中間コードについて学ぶ。 |
制御文の命令列への翻訳,手続きの動作と中間コードが理解できる。
|
11週 |
最適化(1):最適化とは何か,その種類,制御フローグラフについて学ぶ。 |
最適化の内容と,その種類,制御フローグラフが理解できる。
|
12週 |
最適化(2):局所最適化について学ぶ。 |
局所最適化が理解できる。
|
13週 |
最適化(3):大域最適化の種類,データフロー解析について学ぶ。 |
大域最適化の種類,データフロー解析が理解できる。
|
14週 |
コード生成(1):コード生成とは何か,算術式のコード生成について学ぶ。 |
コード生成の内容,算術式のコード生成が理解できる。
|
15週 |
コード生成(2):レジスタ割当について学ぶ。 |
レジスタ割当が理解できる。
|
16週 |
|
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 代入や演算子の概念を理解し、式を記述できる。 | 4 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 4 | |
変数の概念を説明できる。 | 4 | |
データ型の概念を説明できる。 | 4 | |
制御構造の概念を理解し、条件分岐を記述できる。 | 4 | |
制御構造の概念を理解し、反復処理を記述できる。 | 4 | |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 4 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 4 | |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 4 | |
主要な言語処理プロセッサの種類と特徴を説明できる。 | 3 | |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 3 | |
プログラミング言語は計算モデルによって分類されることを説明できる。 | 3 | |
主要な計算モデルを説明できる。 | 3 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 4 | |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 4 | |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 4 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。 | 4 | |
システムプログラム | 形式言語の概念について説明できる。 | 4 | |
オートマトンの概念について説明できる。 | 4 | |
コンパイラの役割と仕組みについて説明できる。 | 4 | |
形式言語が制限の多さにしたがって分類されることを説明できる。 | 4 | |
正規表現と有限オートマトンの関係を説明できる。 | 4 | |