プログラム言語論

担当菊地時夫
連絡方法:tkikuchi@is.kochi-u.ac.jp
単位:
情報科学科 3回生以上 選択
アドバイス時間:水曜日 8:50 〜 10:20
場所:408号室
キーワード文脈自由文法、言語処理系、語句解析、構文解析、意味解析、コード生成

授業目標

プログラム言語は、計算機を利用する上で、各種のアルゴリズムを具体化する 手段として重要な位置を占めています。この授業では、さまざまなプログラム 言語の文法を記述する方法を学ぶとともに、その記述から自動的に言語処理系 を作り出す方法について UNIX で使われている yacc (Yet-Another Compiler-Compiler) などを例に上げて勉強します。また、言語に備わっている機能がどのようにして 実現されているかについても学びます。

授業レベル

例題として取り上げるプログラムは、主にC言語で記述します。 また、yacc の中でもC言語の関数の利用などが行われますので、 C言語を十分学んでおくことが必要です。

教材

参考書:
岩波講座ソフトウェア科学 4 プログラミング言語 (武市正人)
岩波講座ソフトウェア科学 5 プログラミング言語処理系 (佐々政孝)
コンパイラ (培風館:エイホ・ウルマン)など。

評価方法

毎回の授業で重要事項確認のための小テストを行います。これを 出席点とし、期末試験の成績を合わせて評価します。

授業内容の概略

  1. イントロダクション。
  2. プログラム言語とは何か。その役割・利用形態など。
  3. 文脈自由文法。文法記述法、構文図など。
  4. 導出・導出木。
  5. 意味論。
  6. 言語処理系
  7. 語句解析。Lex の利用。
  8. 構文解析(1)。LL(1)解析法など。
  9. 構文解析(2)。Yacc (LR解析法)。
  10. 意味解析。
  11. コード生成。引数結合、動的わりつけなど。
  12. プログラム開発の支援。Make, lint など。
  13. 目的指向。C++など。
  14. 予備
  15. 期末試験98年度期末試験
  16. 補講日

授業方法

主に板書によって講義しますが、必要に応じてプリントを配布します。

受講生へのコメント

単にプログラムが書ければよいというのではなく、そのプログラムによって 計算機の中で何が起こるのかについて知ることが重要 です。