「コンパイラ」授業案内
(2024年度 春学期)
工学部 情報工学課程 教授 石浦 菜岐佐
授業目的
計算機による言語処理の基礎, およびプログラムの翻訳とその実行の方式について理解し,
簡単なコンパイラをC言語によって実装できることを目的とする.
到達目標
- インタプリタ, JITコンパイラ等の各種言語処理系の概要とそれらの違いを説明できる.
- BNFによる構文記述を理解できる.
- LL(1)およびLR(1)の構文解析表に基づき構文解析の過程を示せる.
- 主な最適化手法について, どのような変換が行われるか説明できる.
- 字句解析および再帰下降解析の手法を理解し, これらに基づくコンパイラのプログラミングができる.
- 生成されたアセンブリコードを参照しながらコンパイラのデバッグができる.
講義の内容
- 講義概要, 言語処理系 (コンパイラとは)
- 字句解析
- 【演習】 字句解析系の作成
- 仮想スタック機械
- 【演習】 仮想スタック機械のアセンブリの演習
- 構文解析
- 【演習】 構文解析系の作成 (1)
- 構文解析の自動化
- 【演習】 構文解析系の作成 (2)
- コード最適化
- 【演習】 構文解析系の作成 (3)
- 【演習】 構文解析系の作成 (4)
- 授業中試験
- 【演習】 構文解析系の作成 (5)
講義方法
コンパイラの基礎知識や理論的背景に関する最小限の講義と併行して,
簡単なコンパイラを作成する演習
(C 言語で 800 行程度のプログラミング) を行う.
演習には「プログラミング実習III」を履修したレベルのプログラミング能力が必要である.
プログラミングに自身のない者は, あらかじめ相談にくること.
教科書・参考書
教科書は使用しない. 参考書として下記を推薦する.
- 辻野嘉宏著: コンパイラ, 昭晃堂, ISBN4-7856-2030-7.
- 原田健一著: コンパイラ構成法, 共立出版, ISBN4-320-02922-4.
成績評価方法・基準
- STATE4以外の全てのプログラムについて動作チェックにパスし, レポートを提出することが本科目の合格の必要条件である.
- 演習のレポート60%+ 授業中試験の成績40%により算出し, 合計60点以上が合格である.
- 演習のレポートの締切は厳格に適用する. 締切を過ぎたレポートは受理しない (その時点で不合格となる) ので注意すること.
- 演習において他人のプログラムをコピーする等の不正行為を行った場合には本科目を不合格 (0点) とする.
「プログラムのコピー」は次のような行為を含む.
- 他人のプログラムファイルの全部または一部をコピーして提出すること.
- 印刷または表示された他人のプログラムを見ながら入力したプログラムを提出すること.
- 他人のプログラムのコピーを入手し, それを編集して提出すること (入手の時点で不正とみなす).