コンパイラ(Compilers)


岡山大学moodle [2020093243]コンパイラ/Compilers 同時開講科目: 093017/093251

講義情報

科目区分 コース専門科目(情報系学科 計算機工学コース/知能ソフトウェアコース)/ 専門科目(平成23〜26年度入学生)
講義番号 093243(情報系学科計算機工学コース,平成27年度以降入学生)/ 093251(情報系学科知能ソフトウェアコース,平成27年度以降入学生)/ 093017 (情報系学科 2年次生,平成23〜26年度入学生)
授業科目 コンパイラ
対象学生 情報系学科3年次生
単位数 2単位
科目区分 コース専門科目(計算機工学コース/知能ソフトウェアコース)(平成27〜30年度入学生) /専門科目(平成23〜26年度入学生)
選択・必修の別 必修(計算機工学コース) / 選択(知能ソフトウェアコース)/ 選択(平成23〜26年度入学生)
学期・曜日・時限 3学期・月曜日 5,6限,金曜日 1, 2限
講義室 工学部4号館 11講義室 オンライン
概略 プログラミング言語における基礎的な概念および形式化について述べ, プログラミング言語処理系の概要と構成・実現法を講述する。 特に,プログラミング言語をアセンブリ言語/機械語に変換する 変換系(コンパイラ)における基本的な技術である字句解析, 構文解析,意味解析,コード生成を中心に講述する。
一般目標 コンパイラの役割,基本的な概念,機能,理論的な背景,構造, 実現方式について学習する.
個別目標 1. コンパイラの基本的な機能と構成を理解する
2. 字句解析,構文解析を通した形式的な言語処理を理解する
3. コード生成を通してコンピュータアーキテクチャやオペレーティングシステムの理解を深める
受講要件 C言語によるプログラミングの基本的な知識を有すること
履修上の注意
成績評価基準 出席状況,演習課題,期末試験などにより総合的に評価する.
教材 (教科書): 湯淺太一: コンパイラ ― 情報系教科書シリーズ ―(オーム社)
(参考図書)
中田育男:コンパイラ ― 新コンピュータサイエンス講座 ― (オーム社)
David A. Patterson, John L. Hennessy:コンピュータの構成と設計 ハードウエアとソフトウエアのインタフェース 第5版(2014年出版) 上巻および下巻(日経BP社)
連絡先 E-mail: lect-compiler(at)arc.cs.okayama-u.ac.jp
(E-mail アドレスの (at) の部分は半角の@に置き換えて送信のこと)
備考 情報工学実験C(ソフトウェア)の履修に必要な知識を講義するため, 履修することを強く勧める.

令和2年度シラバス(講義番号: 093243(計算機工学コース)/ 093251(知能ソフトウェアコース)/ 093017 (情報系学科 2年次生,平成23〜26年度入学生))


授業計画(令和2年度(2020年度)版)

講義日 授業内容
110/ 2 (金) 授業の概説とコンパイラの概要
2 10/ 5 (月) 字句解析(1)
310/ 9 (金) 字句解析(2)
410/12 (月) 文法
510/16 (金) 構文解析(1)
610/19 (月) 構文解析(2)
710/23 (金) 構文解析(3)
810/26 (月) 前半の復習/意味解析
910/30 (金) コード生成(1)
1011/2 (月) コード生成(2)
1111/ 6 (金) コード生成(3)
1211/ 9 (月) 最適化
1311/13 (金) コンパイラに関連するトピック
1411/16 (月) 復習等
1511/20 (金) (自習)
1611/27 (金) 期末試験
(11月20日(金)は月曜日の授業を行う)

講義資料等


演習課題

(演習課題等はここに掲載予定)

  • 10/2 演習問題

    (ヒント)
  • 10/5 演習問題
  • 10/9 Lex演習
  • 10/16 演習問題

  • 10/23 Yacc演習
    演習したこと,感想などをA4一枚程度のレポートにまとめて moodle の所定の場所へ提出のこと(10月29日(木) 23:59締切)
  • 10/26 演習問題 (PDF)
  • 10/30 演習問題

  • 11/16 演習問題 (PDF,(Moodleにアクセスできない人 >> PDF))

  • その他


    コンパイラ関連の参考図書

    [Aho 77] Alfred V. Aho and Jeffrey D. Ullman: Principles of Compiler Design, Addison-Wesley, 1977
    (訳本: 土井範久訳, コンパイラ,培風館,1986)
    [Aho 86] Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman: Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986
    (訳本: 原田賢一訳,コンパイラI, II(原理・技法・ツール),サイエンス社,1990)
    [Aoki 09] 青木峰郎: ふつうのコンパイラをつくろう (言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み), ソフトバンク クリエイティブ,2009
    [Appel 97] Andre W. Appel: Modern Compiler Implementation in Java, Cambridge University Press, 1997
    (Second editionがある, ML版の翻訳本「 最新コンパイラ構成技法」もある)
    [Chiba 12] 千葉滋: 2週間でできる! スクリプト言語の作り方, 技術評論社,2012
    [Harada 99] 原田賢一: コンパイラ構成法, 共立出版,1999
    [Hayashi 10] 林晴比古: 明快入門コンパイラ・インタプリタ開発, ソフトバンク クリエイティブ,2010
    [Imajyo 04] 今城 哲二・布広 永示・岩澤 京子・千葉 雄司: コンパイラとバーチャルマシン, オーム社,2004
    [JVM 99] Tim Lindholm and Frank Yellin: `` The Java Virtual Machine Specification (Second Edition)'', Sun Microsystems,1999
    [Kakugawa 08] 角川裕次: Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念, 森北出版,2008
    [Kashiwagi 13] 柏木餅子,風薬: きつねさんでもわかるLLVM 〜コンパイラを自作するためのガイドブック〜, インプレスジャパン,2013
    [Miyamoto 07] 宮本衛市: はじめてのコンパイラ, 森北出版,2007
    [Muchnick 97] Steven S. Muchnick: Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997
    [Nakata 81] 中田育男: コンパイラ, 産業図書,1981
    [Nakata 08] 中田育男,渡邊坦,佐々政孝,滝本宗宏: コンパイラの基盤技術と実践, 朝倉書店,2008
    [Nakata 09] 中田育男: コンパイラの構成と最適化(第2版), 朝倉出版,2009
    [Saotome 92] 五乙女健治: yacc/lex プログラムジェネレータ on UNIX, 啓学出版,1992
    [Sassa 89] 佐々政孝: プログラミング言語処理系, 岩波書店,1989
    [Srikant 03] Y.N Srikant, P. Shankar (ed.): The Compiler Design Handbook, Optimizations and Machine Code Generation, CRC Press, 2003
    [Yuasa 01] 湯淺太一: コンパイラ, オーム社(昭晃堂),2001