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



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