← カタログへ戻る #094

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はそれをアセンブリまで保ったまま下ろす。