山梨大学電子シラバス>検索結果一覧>授業データ



授業科目名
担当教官
コンパイラ
渡辺 喜道
時間割番号
単位数
コース
履修年次
期別
曜日
時限
263301 2 2 後期 I
[概要]
最も一般的なソフトウェアの作成方法は,高水準プログラミング言語を用いて目的とするソフトウェアの動作を記述したプログラムを作成し,それをコンピュータに伝えることにより行われる.このとき,記述されたプログラムをコンピュータに伝えるための手段や道具が必要になる.つまり,プログラミング言語の持っている言語モデルとオペレーティングシステム/コンピュータアーキテクチャの間のギャップを埋めるものが必要となる.そのような道具の中にはコンパイラやインタプリタ,トランスレータなどの言語処理系がある.これらは,現在のソフトウェア開発環境を支える上で,重要かつ欠くことのできない基本的なソフトウェア群である.本講義では,言語処理系の概念,動作,構造,構成法の初歩を学ぶ.特に,コンパイラを設計,構成するときに役立つ様々な手法を習得し,同時にそれらの持つ論理的な枠組みを理解し,それを実際のコンパイラに適用することを目的とする.
[具体的な達成目標]
(1)コンパイラの働きを理解できる.
(2)字句のパターンを正規表現で表現でき、正規表現から状態数最小の有限オートマトンを構成できる.
(3)構文の定義ができる.
(4)下向き及び上向きの構文解析の方法を理解できる.
(5)簡単な意味解析ができる.
(6)基本的な文のコード生成ができる.
(7)最適化技術を使い,コードを最適化できる.
[必要知識・準備]
本講義を履修するためには,授業科目「情報処理および実習」,「情報数学基礎」,「プログラミング入門」,「プログラミング入門演習」,「アルゴリズムとデータ構造I」,「アルゴリズムとデータ構造I演習」,「アルゴリズムとデータ構造II」,「アルゴリズムとデータ構造II演習」,「計算機アーキテクチャI」,「計算機アーキテクチャII」をあらかじめ履修し,それらの内容を十分に理解していること.また,「コンパイラ演習」,「プログラミング言語論」を同時に履修することが望ましい.
[評価基準]
評価基準はどの程度講義目標に達したかであり,最終評価は中間試験と期末試験で行う.配点は中間試験50%,期末試験50%である.
[教科書]
  1. 湯浅太一, コンパイラ, 昭晃堂, ISBN:4-7856-2050-1
[参考書]
  1. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Compilers - Principles, Techniques, and Tools, addison-wesley, ISBN:0-201-10194-7
[講義項目]
(01)コンパイラの概説(1) コンパイラの役割
(02)コンパイラの概説(2) コンパイラのフェーズ
(03)字句解析(1) 字句解析の役割
(04)字句解析(2) 正規表現,有限オートマトン
(05)構文解析(1) 構文解析の役割
(06)構文解析(2) トップダウン構文解析
(07)構文解析(3) ボトムアップ構文解析
(08)中間試験
(09)構文解析(4) LR構文解析
(10)意味解析
(11)中間コード生成(1) コード生成
(12)中間コード生成(2) レジスタ割当
(13)中間コード生成(3) 関数のコード生成
(14)コード最適化
[教育方法]
・講義中に簡単な演習問題を解かせ,コンパイラの仕事を体得できるように心がけている.
・講義ではプロジェクタを使い,説明している.また,講義中用いるスライドを紙媒体で配布し,講義を聴くことに集中できるようにしている.
・実際にコンピュータでの動作を実演している.
[JABEEプログラムの学習・教育目標との対応]
教育目標(A)技術者としての倫理に関しては,コンパイラの基本動作を理解して,多くの実行プログラムがコンパイラを利用して作成されることを学ぶ.また,コンパイラの性能がソフトウェアの性能に依存することを学ぶ.
教育目標(B)情報の表現と処理方法に関しては,コンパイラを構成するために必要なデータ構造とアルゴリズムを学ぶ.
教育目標(C)問題のモデル化と問題解決能力に関しては,高水準プログラミング言語が持っている言語のモデル化手法とモデル化された言語の文法と意味を学ぶ.この目標を達成することに重点を置いている.
教育目標(D)ソフトウェアツールの習得に関しては,コンパイラ生成系,実行ファイル生成系を利用すると比較的簡単に処理系が実現できることを学ぶ.
[その他]
(未登録)