コンパイラ 2022
情報システム・セキュリティコース(CSSS) 向けの「コンパイラ」 (火 Ⅱ コマ・
3304 教室
担当: 香川) の情報を掲載します。
現在の課題✨ へ
受講上の注意
お知らせ
(新しいものほど上です)
(10/04) 昨年(2021)度の試験問題 ,
解答例
今年度も持ち込み不可 です。
(10/04)
教科書の p.45 表 4.2 に訂正があります。
「コンパイラの仕組み」訂正
(10/04) パスワードがかかっているページは、Microsoft アカウント(大学のメールのアカウント)
で閲覧できます。
(10/04) この授業は、現在のところ Moodle を使用していません。
(連絡には DreamCampus を使用します。)
配布プリント
「オートマトン」の配布プリント
以下は前期「オートマトン」で配布したプリントの再掲です。
各週の予定
現在の課題✨ へ
パスワードがかかっているページは、Gmail アカウント(大学のメールのアカウント)
で閲覧してください。
注意:
設定が変更されたのに、変更が反映されないときは、
いったんログアウト して、
再度アクセスを試みて下さい。
必ず各自で提出したファイルのバックアップ を取っておいて下さい。
(自分のノート PC だけではなく、stfile などの大学のサーバのどこかにもバックアップしておいて下さい!!)
各個人へのメッセージ
過去
📁/📂 (← ここ以前の課題の開閉)
第 01 週 10/04(復習)
着席位置
配布プリントに関するアンケート 、
課題 、
アップロード 、
課題に対するコメント 、
第 02 週 10/11(プリント 1 章 ⦅教科書 4 章⦆ )
着席位置
課題 、
アップロード
課題に対するコメント 、
第 03 週 10/18
着席位置
課題 、
アップロード 、
課題に対するコメント 、
第 04 週 10/25(プリント 2 章 ⦅教科書 § 5.7⦆)
着席位置
課題 、
アップロード 、
演算子順位法による構文解析
(PDF )
課題に対するコメント 、
11/01 は月曜振替日になります。
第 05 週 11/08
着席位置
課題 、
アップロード 、
Flex と Bison のインストール (パスワードは授業中に連絡) 、
Bison について (PDF )
課題に対するコメント 、
第 06 週 11/15
着席位置
課題 、
アップロード 、
Bison について (PDF )
課題に対するコメント 、
第 07 週 11/22
着席位置
課題 、
アップロード 、
Bison について (PDF )、
Flex と Bison を同時に使う (PDF )
課題に対するコメント 、
第 08 週 11/29
着席位置 、
課題 、
アップロード 、
課題に対するコメント 、
着席位置
課題 、
アップロード 、
Oolong のダウンロード📋/📂 (← Oolong に関する説明の開閉)
Oolong は JVM 用のアセンブラです。
本演習では Oolong をコンパイラのターゲットとして使用します。
課題に対するコメント 、
第 10 週 12/13
着席位置
課題 、
アップロード 、
課題に対するコメント 、
第 11 週 12/20
着席位置
課題 、
アップロード 、
📋/📂 (← 再帰下降構文解析プログラムに関する説明の開閉)
次の文法(開始記号は E
):
E → C
| F '(' L ')'
L → E R
R → ',' E
| ε
-- 以下は終端記号: 字句解析部で処理
C → '0' | '1' | ... | '9' -- 簡単のため一桁の数のみ
F → '+' | '-' | '*' | '!'
に対する再帰下降構文解析プログラム
再帰下降構文解析プログラムの例
課題に対するコメント 、
01/10 は金曜振替日です。
第 12 週 01/17
着席位置
課題 、
アップロード 、
課題に対するコメント 、
第 13 週 01/24
着席位置
課題 、
アップロード 、
本日の課題が早くできた人は、最終週の課題 を
やっておいてください。
課題に対するコメント 、
第 14 週 01/31
着席位置
課題 、
アップロード 、
📋/📂 (← 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 -> … (長いので省略)
に対する再帰下降構文解析プログラムの例である。
実行の仕方
tinierC.c から実行ファイル(tinierC.exe)を生成する
( bcc32 tinierC.c
または、 cl tinierC.c
)。
この tinierC.exe が TinierC のコンパイラーである。
TinierC のソースファイルを作成する。
(以下の例ではこのソースファイルの名前は、
MyProg.tc としている。)
内容は、例えば以下のようなものとする。
if (a == 1) {
d = b * c;
} else {
d = b + c;
}
println(d + 2);
TinierC のソースをコンパイルする。
以下の例では、生成する Oolong ファイルの名前を MyProg.j としている。
( tinierC.exe < MyProg.tc > MyProg.j
)
Oolong で、上で生成された Oolong ファイルをアセンブルする。
( java -jar oolong.jar MyProg.j
)
上で、生成されたクラスファイルを実行する。
( 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/07
着席位置 、
課題 、
アップロード 、
今後
第 16 週 02/14(期末テスト)
📋/📂 (← ここ以降の予定の開閉)
参考リンク
(新しいものほど上です)
教科書
「オートマトン」と同じ教科書を使います。
コンパイラの仕組み
渡邊 坦 著
朝倉書店
ISBN4-254-12708-1
Koji Kagawa (メール: 姓の小文字.名の小文字@〜
)
(SPAM mail 予防のため省略します。)