コンパイラ

科目基礎情報

学校 釧路工業高等専門学校 開講年度 令和08年度 (2026年度)
授業科目 コンパイラ
科目番号 0089 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 情報工学分野 対象学年 4
開設期 前期 週時間数 2
教科書/教材 教科書:佐渡一広他 未来へつなぐデジタルシリーズ コンパイラ(共立出版) 参考書:村上列訳 lex&yaccプログラミング(アスキー出版局)・榊正憲訳 Pthreadsプログラミング(オライリー・ジャパン)
担当教員 林 裕樹

到達目標

字句解析の仕組みが説明できる
文法定義の表現が説明できる
構文解析の仕組みが説明できる
構文木の意味づけが説明できる
コード生成の仕組みが理解できる

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
字句解析字句解析の動作原理を理解し、正規表現で記述できる。字句解析の動作原理が説明できる。字句解析の動作がわからない。
文法定義文法定義の表現を理解し、内容を把握できる。文法定義の表現方法が説明できる。文法定義の表現がわからない。
構文解析構文解析の動作原理を理解し、構文解析のオートマトンを構築できる。構文解析の動作原理が説明できる。構文解析の動作がわからない。
意味解析構文木を構築し、その意味を解析できる。構文木と意味の対応関係が説明できる。構文木の意味が分からない。
コード生成コード生成の仕組みを理解し、実際のコードの動作を解析できる。コード生成の動作原理が説明できる。コード生成の動作がわからない。

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

ディプロマ・ポリシー D 説明 閉じる

教育方法等

概要:
プログラムを解析してコンピュータで実行可能な形式に変換するための基礎理論や、コンパイラがオートマトンの具体的な応用の一つであることを理解するとともに、字句解析器や構文解析器の自動生成ツール等の応用を学ぶことを目標とする。
これまでに学んだC言語やJava言語などのコンパイラが、どのような仕組みで動作しているのかを理解することができる。
授業の進め方・方法:
講義形式で授業を行います。コンパイラの理論はオートマトンを用いることを前提とするので、オートマトンの授業内容を確認しておくとよいです。
また、章ごとなどの区切りで適宜レポート課題を課します。

成績評価:シラバスに定める評価割合に基づき100点法で評価を算出し、「学業成績の試験・評価に関する内規」に従い、60点以上を合格とする。
課題提出期限:後期末成績評価まで
期限超過時:再試験の対象となる場合は、受理し再試験の合否に基づいて評価する。
中間評価:評価割合に準ずる。
提出課題等の注意事項:学修単位科目のため、事前・事後学習として課したポートフォリオを必ず提出すること。
再試合否:定期試験の得点が60%未満であった範囲についての出題に対してそれぞれ60%以上の得点をその範囲の合格とし、かつ合格した再試験の評点を100点満点中60点とする評価割合に基づいた評価が60点以上であれば合格とし、評点を60点とする。

前関連科目:オートマトン(3年)
後関連科目:オペレーティングシステム(4年)
注意点:
コンパイラの仕組みを理解することで、プログラミング言語の制限やコンパイル時のエラーメッセージの理由なども知ることができるので、自分でコンパイル操作をする際のコンパイラの挙動をよく観察しておくとよいです。
事前に行う準備学習:講義の冒頭で予習・復習内容を説明する。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 プログラムと言語の動作原理 プログラムがどのように動作しているのかが説明できる
2週 字句解析 字句解析の動作原理が説明でき、字句解析器の自動生成ツールの基本動作が説明できる
3週 文法 文法の定義方法が説明できる
4週 下向構文解析(1) 下向構文解析の動作原理が説明できる
5週 下向構文解析(2) LL構文解析の基本動作が説明できる
6週 yaccによる構文解析 yaccによる構文解析器の自動生成の基本が説明できる
7週 上向構文解析(1) SLR構文解析の動作原理が説明できる
8週 前期中間試験を実施する
2ndQ
9週 上向構文解析(2) 構文解析のためのオートマトンの構築原理が説明できる
10週 上向構文解析(3) 正規LR構文解析とLALR構文解析の動作原理が説明できる
11週 構文木と意味づけ データ型や制御構造を含めて、構文木と意味の対応が説明できる
12週 コード生成(1) レジスタ割当の仕組みが説明できる
13週 コード生成(2) 関数や手続きの生成の仕組みが説明できる
14週 コード生成(3) 実際のコンパイラの出力から動作を説明できる
15週 コード生成(4) 実際のコンパイラの出力から動作を説明できる
16週 前期末試験を実施する

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

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング変数の概念を説明できる。4前11
データ型の概念を説明できる。4前11
代入や演算子の概念を理解し、式を記述できる。3前14,前15
制御構造の概念を理解し、条件分岐を記述できる。3前11
制御構造の概念を理解し、反復処理を記述できる。3前11
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3前14,前15
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。4前12,前13,前14,前15
主要な言語処理プロセッサの種類と特徴を説明できる。4前1,前6
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。4前1,前6
プログラミング言語は計算モデルによって分類されることを説明できる。4前1
主要な計算モデルを説明できる。4前1
ソフトウェアアルゴリズムの概念を説明できる。4前2,前3,前4,前5,前7,前9,前10
与えられたアルゴリズムが問題を解決していく過程を説明できる。4前2,前3,前4,前5,前7,前9,前10
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。4前2,前3,前4,前5,前7,前9,前10
時間計算量によってアルゴリズムを比較・評価できることを説明できる。4前2,前3,前4,前5,前7,前9,前10
領域計算量などによってアルゴリズムを比較・評価できることを説明できる。4前2,前3,前4,前5,前7,前9,前10
整列、探索など、基本的なアルゴリズムについて説明できる。4前2,前3,前4,前5,前7,前9,前10
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。4前11
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。4前4,前5,前7,前9,前10
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。4前4,前5,前7,前9,前10
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。4前12,前13,前14,前15
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。4前4,前5,前7,前9,前10
システムプログラム形式言語の概念について説明できる。4前2,前3
形式言語が制限の多さにしたがって分類されることを説明できる。4前2,前3
オートマトンの概念について説明できる。4前7,前9,前10
正規表現と有限オートマトンの関係を説明できる。4前2
コンパイラの役割と仕組みについて説明できる。4前1

評価割合

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