お知らせ:

概要

  • 担当: 佐藤 三久
  • 内容:(便覧掲載概要)
    言語処理系(コンパイラとインタープリタ)の入門で、その理論と技法の基礎を 解説する。簡単なCコンパイラを例に内部の仕組みを具体的に紹介する。

    この講義は、言語処理系、すなわちプログラミング言語のコンパイラとインター プリタのしくみを習得するのが目的である。目標としては、簡単な言語処理系 を作成できるようになることである。

    これまでの経験から、話を聞いただけでも理解が進まないようなので、演習問 題で実際に簡単な言語処理系を作ってもらいながら、講義を進めることにする。 大体、次のような手順で進める。

    1. 字句解析と構文解析の基礎として、式の評価をするプログラム (つまり、電卓のようなもの)を作って見る。
    2. 例として、C言語風の手続き型言語を考える。
    3. インタープリターの基礎として、この言語に対しインタプリターを設計する。
    4. 構文解析、コード生成の練習のために、この言語に対し のコンパイラを作る。
    5. 時間があれば、コードの最適化について、触れる。

    講義日程・資料

    日時 1 時限 2 時限 講義資料
    第1回 9月2日 言語処理系とは 基本:式の処理 [講義資料1]
    [講義スライド1]
    第2回 9月9日 字句解析の基礎
    lexの使い方
    top-down parserの作り方と
    言語処理系データ構造
    [講義資料2] [講義資料3]
    [tiny-c資料1] [tiny-c資料2]
    [講義スライド2] [講義スライド3] [講義スライド4]
    第3回 9月16日 演習 (課題1,課題2) 構文解析の基礎と実際
    yaccの使い方(1)
    [講義資料4]
    [講義資料5]
    [講義スライド5]
    第4回 9月30日 演習 (課題3) yaccの使い方(2)
    インタプリター
    (式、関数の実行)
    [講義資料6] [tiny-c資料3] [講義スライド6]
    第5回 10月7日 演習 (課題4) インタプリターの解説
    (制御文、局所変数)
    [講義資料7] [講義スライド7]
    お休み 10月14日 学園祭のためお休み
    第6回 10月21日 小テスト スタックマシン [講義資料8] [講義スライド8]
    第7回 10月28日 演習 (課題5) スタックマシンへのコンパイラ [講義資料9] [講義スライド9]
    第8回 11月4日 演習 (課題6) レジスタマシンへのコンパイラ [講義資料10] [講義スライド10]
    第9回 11月11日 演習(課題7),最終課題 コード最適化入門、まとめ [講義資料11] [講義スライド11]

    演習課題

    詳細は、 こちら