シラバスの詳細な内容を表示します。
→ 閉じる(シラバスの一覧にもどる)
開講年度 | 2020 年度 | |
---|---|---|
開講区分 | 工学部情報工学科/総合工学科情報工学コース ・専門教育 | |
受講対象学生 |
学部(学士課程) : 3年次 |
|
選択・必修 | 必修 |
|
授業科目名 | コンパイラ | |
こんぱいら | ||
Compiler Design | ||
単位数 | 2 単位 | |
ナンバリングコード | ||
開放科目 | 非開放科目 | |
開講学期 |
前期 |
|
開講時間 |
木曜日 5, 6時限 |
|
開講場所 | ||
担当教員 | 山田俊行(工学部情報工学コース) | |
YAMADA, Toshiyuki | ||
SDGsの目標 |
|
授業の概要 | コンパイラは,高水準のプログラミング言語から機械語レベルの命令列へと変換するソフトウェアである.この講義では,コンパイラの各フェーズ(処理の論理的なまとまり)がどのように構成され,どんな理論に基づいて実現されているかを学ぶ.また,プログラミング言語処理系を実際に作る際に役立つ基礎技術を修得する. |
---|---|
学修の目的 | コンパイラについて,次の観点から理解を深める. ・構成と仕組み ・基礎理論 ・作成技術 |
学修の到達目標 | ●字句解析:正規表現で字句構文を記述できる.字句解析器の仕組みを説明できる. ●構文解析:文脈自由文法で言語の構文を記述できる.導出や解析木を使って,文法に基づいて字句列を解析できる.等価変換の各種の手法を使って文法を変形できる.再帰下降構文解析とLR構文解析の考え方を説明できる.文法が LL(1) であるかや LR(1) であるかを,(必要ならツールの助けを借りて)判定できる.文法に沿って構文解析手続きを実現できる. ●意味解析:式や文を中間コードに変換できる.構文主導翻訳に基づく属性値の計算ができる.記号表の役目を説明できる.手続き実行時のコールスタックの動作を説明できる. ●最適化:各種の局所最適化を,例を挙げて説明できる.例題に対してDAGを使った局所最適化ができる.各種の大域最適化を,例を挙げて説明できる.例題に対してデータフロー解析ができる. ●コード生成:算術式の構文木の例に対してコード生成ができる.中間コードの例に対してレジスタ割り当てができる. |
ディプロマ・ポリシー |
|
成績評価方法と基準 | 期末試験10割.講義への10回以上の出席が期末試験の受験資格.6割以上の得点で合格. |
授業の方法 | 講義 |
授業の特徴 |
Moodleを活用する授業 |
授業改善の工夫 | 毎回の確認問題で受講生の理解度を把握し,授業の進度を調整する.確認問題の答案に授業への意見も書いてもらい,授業の進め方を改善する.ウェブを活用して授業の情報や資料を見られるようにする.Moodle を出席状況と採点結果の通知に使う. |
教科書 | なし (資料を配布) |
参考書 | 『コンパイラ—原理・技法・ツール—』,A. V. エイホ,M. S. ラム,R. セシィ,J. D. ウルマン,第2版,サイエンス社,2009. 『プログラミング言語処理系』,佐々政孝,岩波書店,1989. |
オフィスアワー | 水曜日7〜8時限 (14:40-16:10),情報棟5階 山田講師室 |
受講要件 | |
予め履修が望ましい科目 | データ構造・アルゴリズム論 I,離散数学,オートマトン・形式言語理論,計算機言語論 I |
発展科目 | 情報工学実験 |
その他 |
授業のホームページ(メールによる連絡先等も掲載) http://www.cs.info.mie-u.ac.jp/~toshi/lectures/compiler/ |
MoodleのコースURL |
https://moodle.mie-u.ac.jp/moodle35/course/view.php?id=348 |
---|
キーワード | プログラミング言語,字句解析,構文解析,意味解析,中間コード生成,コード最適化,コード生成 |
---|---|
Key Word(s) | programming language, lexical analysis, syntax analysis, semantic analysis, intermediate code generation, code optimization, code generation |
学修内容 | ●第1回 序論 言語処理系,コンパイラの構造 ●第2回 字句解析 字句解析とは,正規表現,有限オートマトン,字句解析器の生成ツール ●第3回 構文解析 1 構文解析とは,文脈自由文法 ●第4回 構文解析 2 導出と解析木の対応,下向き構文解析 ●第5回 構文解析 3 LL(1)文法,文法の等価変換 ●第6回 構文解析 4 LL(1)判定,拡張文脈自由文法 ●第7回 構文解析 5 上向き構文解析,LR構文解析 ●第8回 構文解析 6 LR(1)文法,構文解析器の生成ツール ●第9回 意味解析 1 意味解析とは,中間表現 ●第10回 意味解析 2 構文主導翻訳,後置表記の計算,制御文の命令列への翻訳 ●第11回 意味解析 3 記号表,手続きの動作と中間コード ●第12回 最適化 1 最適化とは,制御フローグラフ,最適化の種類 ●第13回 最適化 2 局所最適化,DAGによる最適化 ●第14回 最適化 3 大域最適化,データフロー解析 ●第15回 目的コード生成 コード生成とは,算術式のコード生成,レジスタ割り当て ●第16回 期末試験 |
事前・事後学修の内容 | 授業前に学習事項を確認し,配布資料や参考書を読んで疑問点を整理しておく.ウェブページ上の確認問題を解き,理解度を確認する.復習には,授業中に解けなかった確認問題や教科書等の演習問題を解き,ウェブページの解答や解説を参考にするとよい. |