「コンパイラ実習」授業案内
(2024年度 秋学期)
理工学部 情報科学科 教授 石浦 菜岐佐
授業目的
C++プログラミング,
言語処理系における抽象構文木の表現と操作の手法,
lex/yaccによる言語処理等を習得することを目的とする.
到達目標
- C++基礎的なプログラミングを習得し, 継承やポリモーフィズムを用いたプログラミングができる.
- 言語の抽象構文木のような木構造のデータ構造を構築できる.
- lex/yaccを用いて字句解析と構文解析を行う処理系を構築できる.
- 2,000行程度のプログラムを書き, そのデバッグができる.
講義内容
各自のC++の習熟度に応じて実習内容を調整する.
- C++ 入門 (1) C から C++ へ
- C++ 入門 (1) C から C++ へ
- C++ 入門 (2) 標準ライブラリ STL
- C++ 入門 (3) コンストラクタ, デストラクタ, 代入
- C++ 入門 (3) コンストラクタ, デストラクタ, 代入
- C++ 入門 (4) 継承とポリモーフィズム
- 抽象構文木のクラス定義 (1)
- 抽象構文木のクラス定義 (2)
- 抽象構文木のクラス定義 (3)
- 抽象構文木のクラス定義 (4)
- インタープリタの実装 (1)
- インタープリタの実装 (2)
- インタープリタの実装 (3)
- インタープリタの実装 (4)
- lex の使用法
- yacc による抽象構文木の生成 (1)
- yacc による抽象構文木の生成 (2)
- yacc による抽象構文木の生成 (3)
- yacc による抽象構文木の生成 (4)
- yacc による抽象構文木の生成 (5)
- yacc による抽象構文木の生成 (6)
講義方法
- WWW で公開した資料に基づき各自演習課題に取り組む形式をとる.
- 特に解説等は行わず, 主として質問に答える形でプログラミングを教える.
【教科書・参考書】
- 教科書は使用しない.
- 参考書として下記を推薦する.
- 原田賢一著, "コンパイラ構成法," 共立出版 (ISBN4320029224)
- Scott Meyers 著, 吉川邦夫 訳, "Effective C++" (改訂2版), アスキー出版 (ISBN4756118089)
成績評価方法・基準
- レポートの点数による (ただし, 欠席・遅刻・早退は減点する).
- 提出すべきレポートとその期限は,
初回に各自が宣言したC++の習熟度 (どの課題から開始するか) により決定する.
- 提出すべきレポートが1回でも欠ければ本科目を不合格とする.
各レポートに設定する「最終期限」以降はレポートを受理しない (その時点で本科目を不合格とする) ので注意すること.
- 成績の詳細な算出基準は, 初回の授業で説明する.
- 他人のプログラムのコピーを行った場合は, 発見次第不合格とする.
「プログラムのコピー」には,
メール, USB ドライブ, メッセンジャー等で他人のプログラムのコピーを入手する行為自体を含むので注意すること.