コンパイラ 2023


情報システム・セキュリティコース (CSSS) 向けの「コンパイラ」 (火 Ⅱ コマ・ 3304 教室 担当: 香川) の情報を掲載します。

現在の課題

受講上の注意

お知らせ

(新しいものほど上です)

配布プリント

2 Q「オートマトン」関連のプリント

「コンパイラ」のプリント

ここにリンクをはっていないファイルや、公開日前のファイルは 公開日までに変更する可能性があるので注意してください。

以上をすべてまとめた PDF

各週の予定

(管理者用) トップページデータの更新同・管理者用Quiz集計管理用インデックス

現在の課題

過去

(← ここ以前の課題の開閉)

授業前

配布プリントに関するアンケート

(スタッフ専用) アンケート確認 (

第 01 週 10/03(復習) プリント 0 章

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント

第 02 週 10/10プリント 1 章 ⦅教科書 4 章⦆

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント

第 03 週 10/17プリント 1 章 (§ 1.5 〜) ⦅教科書 4 章⦆

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント

第 04 週 10/24 (演算子順位法・実習)

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

演算子順位法による構文解析PDF

課題に対するコメント

10/31 は月曜振替日になります。

第 05 週 11/07 プリント 2 章 ⦅教科書 § 5.7⦆

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント

第 06 週 11/14

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

Bison について (PDF)

課題に対するコメント

第 07 週 11/21

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

Flex と Bison のインストール(パスワードは授業中に連絡)Bison について(PDF)、

「オートマトン」を履修していない人は、Flex について (PDF) を読んでおいてください。

課題に対するコメント

第 08 週 11/28

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

Flex について (PDF) (復習)、 Flex と Bison を同時に使う(PDF)

課題に対するコメント

第 09 週 12/05(プリント 4–7 章⦅教科書 7–9 章⦆A 章

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)
Oolong のダウンロードと Oolong に関する説明📋/📂

Oolong は JVM 用のアセンブラーです。 本演習では Oolong をコンパイラーのターゲットとして使用します。

課題に対するコメント

第 10 週 12/12

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント

第 11 週 12/19

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)
📋/📂( 再帰下降構文解析プログラムに関する説明の開閉)

 次の文法(開始記号は E):

   E  → C
      | F '(' L ')'
   L  → E R
   R  → ',' E
      |  ε

   -- 以下は終端記号: 字句解析部で処理
   C  → '0' | '1' | ... | '9'   -- 簡単のため一桁の数のみ
   F  → '+' | '-' | '*' | '!'

に対する再帰下降構文解析プログラムの例

課題に対するコメント

01/09 は金曜振替日です。

第 12 週 01/16

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント

第 13 週 01/23

着席位置 課題アップロード

本日の課題が早くできた人は、最終週の課題を やっておいてください。

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント

第 14 週 01/30

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)
📋/📂tinierC.c に関する説明の開閉

tinierC.c は、次の文法(開始記号は X):

(Statement List)
X -> S X
   | ε
(Statement)
S -> if ( E ) S else S
   | while ( E ) S
   | do S while ( E ) ;
   | for ( id = E ; E ; id = E ) S
   | { X }
   | print ( E ) ;
   | println ( E ) ;
   | id = E ;
(Expression)
E -> … (長いので省略)

に対する再帰下降構文解析プログラムの例である。

実行の仕方

  1. tinierC.c から実行ファイル(tinierC.exe)を生成する
    cl tinierC.c または bcc32 tinierC.c )。
    この tinierC.exe が TinierC のコンパイラーである。

  2. TinierC のソースファイルを作成する。 (以下の例ではこのソースファイルの名前は、 MyProg.tc としている。)
    内容は、例えば以下のようなものとする。

    if (a == 1) {
      d = b * c;
    } else {
      d = b + c;
    }
    println(d + 2);
    
  3. TinierC のソースをコンパイルする。 以下の例では、生成する Oolong ファイルの名前を MyProg.j としている。
    tinierC.exe < MyProg.tc > MyProg.j

  4. Oolong で、上で生成された Oolong ファイルをアセンブルする。
    java -jar oolong.jar MyProg.j

  5. 上で、生成されたクラスファイルを実行する。
    java -classpath . MyProg 10 20 30
    ここまでの例のとおり実行すれば、52 と表示されるはずである (a = 10, b = 20, c = 30 が初期値になる)。 また java -classpath . MyProg 1 20 30 では 602 となる (a = 1, b = 20, c = 30 が初期値になる)。

課題に対するコメント

第 15 週 02/06

この授業は基本は対面授業ですが、事情があって対面授業に出席できない受講生のために 02/06 の授業は Zoom でも配信します。 URL はカダサポを見てください。

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック提出状況チェック(表)

課題に対するコメント(02/13 12:00 ころ 公開)、

現在

第 16 週 02/13(期末テスト)

(02/13 New!) 今年(2023)度の期末試験問題解答例

今後

(← ここ以降の予定の開閉)

参考リンク

(新しいものほど上です)

教科書

「オートマトン」と同じ教科書を使います。

コンパイラの仕組み
渡邊 坦 著
朝倉書店
ISBN4-254-12708-1
「コンパイラの仕組み」訂正

Koji Kagawa (メール: 姓の小文字.名の小文字@〜)
(SPAM mail 予防のため省略します。)