1 |
授業ガイダンス
コンパイラ概要
プログラミング言語概要
Python言語復習 |
講義・演習 |
Python言語の復習 |
予50
復100 |
2 |
文字列検索:
HTML言語演習
自然言語検索(形態素解析、nグラム)
HTMLパーサの利用
正規表現 |
講義・演習 |
語句の頻度やリンク先の集計プロ
グラムを作成する |
予50
復100 |
3 |
字句解析:
トークン分割
字句定義方法(BNF, 正規表現, 構文図)
定数、識別子、演算子、コメント、予約語の抽出
字句抽出の優先度
pyparsingの利用方法 |
講義・演習 |
BNF,構文図、正規表現の演習
トークン分割プログラムの作成
結果の保存と一覧表示 |
予50
復100 |
4 |
字句解析(続き):
字句解析プログラム
清書処理
ブロックレベルのカウント
レポート出題予定
小テストまたはクイズ実施予定 |
講義・演習 |
トークン分割プログラムを完成さ
せること |
予50
復100 |
5 |
構文解析:
DSL(ドメイン固有言語)
文の構造理解と定義
宣言文、代入文、while文、if文、return文
関数宣言と引数リスト、ブロック |
講義・演習 |
文抽出プログラムを完成すること |
予50
復100 |
6 |
構文解析(続き):
複合文の扱い
レポート出題予定 |
講義・演習 |
文の識別結果の保存と表示 |
予50
復100 |
7 |
式の処理:
前置・中置・後置記法と相互変換
演算の優先度と結合方向、括弧による優先度処理
操車場アルゴリズム
スタックマシン |
講義・演習 |
前置・後置変換プログラムの作成 |
予50
復100 |
8 |
式の処理(続き):
レポート出題予定
小テストまたはクイズ実施予定 |
講義・演習 |
簡単な電卓プログラムの作成 |
予50
復100 |
9 |
AST(抽象構文木):
ノードの追加と検索、管理するデータ
リストと辞書による木構造の実装
構造の可視化 |
講義・演習 |
字句解析→構文解析→構文木作成
プログラムを完成させること |
予50
復100 |
10 |
インタプリタの作成 |
講義・演習 |
インタプリタの動作確認と完成 |
予50
複100 |
11 |
意味解析、コード生成:
他言語、アセンブラへの変換方法
命令の選択方法、メモリ配置、レジスタ選択
仮想マシン |
講義・演習 |
シンボルテーブル作成、相互参照
テーブル作成プログラム |
予50
復100 |
12 |
再帰、再入可能、再使用、再配置を実現するしくみ:
スタック、フレームポインタ、ヒープ、スコープ
alloc,free,ガーベージコレクション
仮想記憶、メモリ制御機構
バディアルゴリズム
レポートまたは小テスト実施予定 |
講義・演習 |
理解度が低い部分の復習 |
予50
復100 |
13 |
最適化、関連ツール:
最適化処理
リンカ、ライブラリアン、コンパイラコンパイラ、構
文チェッカ、仕様書作成支援
プログラミング言語の言語仕様定義の確認
総合的な復習 |
講義・演習 |
第1回から13回の学習内容につい
て総合的に復習しておく |
予50
復100 |
14 |
達成度確認試験、発展的話題 |
試験 |
理解度が低かった部分の復習
発展的話題で興味がある部分の確
認 |
150 |
15 |
自己点検
達成度試験の解説、
発展的話題 |
解説、講義・質疑 |
|
|
一般に、授業あるいは課外での学習では:「知識などを取り込む」→「知識などをいろいろな角度から、場合によってはチーム活動として、考え、推論し、創造する」→「修得した内容を表現、発表、伝達する」→「総合的に評価を受ける、GoodWork!」:のようなプロセス(一部あるいは全体)を繰り返し行いながら、応用力のある知識やスキルを身につけていくことが重要です。このような学習プロセスを大事に行動してください。
※学習課題の時間欄には、指定された学習課題に要する標準的な時間を記載してあります。日々の自学自習時間全体としては、各授業に応じた時間(例えば2単位科目の場合、予習2時間・復習2時間/週)を取るよう努めてください。詳しくは教員の指導に従って下さい。