コンパイラ

科目基礎情報

学校 高知工業高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 コンパイラ
科目番号 I4020 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 SD 情報セキュリティコース 対象学年 4
開設期 後期 週時間数 2
教科書/教材 教科書は使わず,随時,授業プリントを配布する。
担当教員 岡村 修司

到達目標

コンパイラに関する基礎項目である,字句解析,構文解析,意味解析,最適化,コード生成について,学び,その内容を理解し,説明ができるようになることを目標とする。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
字句解析字句解析器の仕組みを説明できる。正規表現で字句構文を記述できる。正規表現で字句構文を記述できない。
構文解析等価交換の各種の手法を使って文法を変形できる。導出や解析木を使って,字句列を解析できる。導出や解析木を使って字句列を解析できない。
意味解析手続き実行時のコールスタックの動作を説明できる。式や文を中間コードに変換できる。式や文を中間コードに変換できない。
最適化具体的例題に対してデータフロー解析ができる。各種の局所最適化を例を挙げて説明できる。各種の局所的最適化を例を挙げて説明できない。

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

学習・教育到達度目標 (C) 説明 閉じる

教育方法等

概要:
コンパイラは,高水準のプログラミング言語をマシン語の命令列に変換し出力するソフトウェアである。この講義では,コンパイラを構成する各フェーズが,どのような理論に基づいて実装されているかを学ぶ。
授業の進め方・方法:
座学による講義形式を基本とする。必要に応じて演習も行う。
注意点:
【成績評価の基準・方法】
試験の成績を60%、平素の学習状況を40%の割合で総合的に評価する。技術者が身につけるべき専門知識として、上記の到達目標に対する達成度を試験等において評価する。
【事前・事後学習】
事前学習として配布した教材を読んだ上で、理解が難しかった部分を整理して授業に臨むこと。また、事後学習として授業内で提示した課題・演習問題に取り組み提出すること。
【学習単位科目(授業時間外の学習時間等)】
本科目は学習単位のため、以下の標準学習時間を指定した自主学習を累計45時間分以上実施して提出しなければ、成績が60点を超えた場合でも59点として扱い単位を認定しない。
・全15回の授業に対して、0.5時間の事前学習と1.5時間の事後学習(課題含む)。計30時間分以上。
・中間試験および期末試験に対してそれぞれの試験勉強のための課題学習4時間。計8時間分。
【履修上の注意】
この科目を履修するにあたり、3年生科目の「アルゴリズムとデータ構造」4年生科目の「アセンブリⅠ」「グラフとオートマトン」の内容を十分に理解しておくこと。

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

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

授業計画

授業内容 週ごとの到達目標
後期
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

評価割合

試験課題合計
総合評価割合6040100
基礎的能力503080
専門的能力101020