RCCコンパイル
可逆Cコードをコンパイル工程ごとにステップ実行
横山研の RCC(Reversible C Compiler)の中身を覗く教育ゲーム。
可逆C風コード(x += y; x <=> y; if (..) {..} else {..} fi (..))を
字句解析 → 構文解析 → 中間表現(IR) → 命令列 と段階的に変換し、
最後に順 / 逆の両方向で実行して結果を確かめる。可逆性は IR のレベルで保証されている。
DEMO 1: hello inc
— 整数 x を 1 加算する最小プログラム
タスク: + ボタンで 字句解析→構文木→IR→命令列 を1段ずつ進めてください。最後まで進めると順/逆実行で目標が達成できます。
ソース reversible C
入力 x,y,z
0,0,0
出力 x,y,z
—
期待
—
判定
—
コンパイル工程
操作
+ 次の工程 でコンパイルを LEX → AST → IR → BC と1段ずつ進める。 タブを切り替えて各表現を比較。最後の RUN で順/逆実行し、出力が期待と一致するか確認。 ソースを編集して自分のプログラムでも試せる。
可逆性のチェックポイント:=(破壊代入)は使えない。+= -= ^= のみ。
これにより IR レベルで「すべての命令に逆命令が存在」する。RCCはそれをアセンブリまで保ったまま下ろす。