はじめに / セットアップ / CLI / 対応ブロック一覧
xyo-rust
の処理は、大きく分けると 4 段階です。
-
.sb3からproject.jsonを取り出す - Scratch プロジェクト全体を Rust の構造体へ変換する
- hat block を起点にスレッド単位の中間表現へ変換する
- 一部のスレッドを LLVM IR へ変換する
実行ランタイムはまだ完成していないため、現在の中心は解析と変換のパイプラインです。
| モジュール | 役割 |
|---|---|
src/sb3.rs
|
ZIP アーカイブとして
.sb3
を開き、
project.json
を読み込む。失敗時には位置情報付きのエラー整形も担当する
|
src/types/
|
Scratch の JSON 構造を受ける型定義を提供する |
src/parser/
|
Scratch ブロックを
Stmt
/
Expr
に変換し、hat block からスレッド単位に解析する
|
src/compiler/
|
inkwell
を使って LLVM IR を生成し、最適化パスを適用する
|
パーサーは、Scratch のブロック集合をそのままなぞるのではなく、hat block を起点に「実行のまとまり」に近い形へ組み替えます。
起点になる hat block の例:
- 旗が押されたとき
- キーが押されたとき
- スプライトやステージがクリックされたとき
- メッセージを受け取ったとき
- クローン開始時
- 手続き定義
現在の IR 生成は全面対応ではなく、一部のリテラル、一部の演算子式、一部の移動系命令の検証が中心です。
どの opcode がパーサー段階まで通るか、どこまで IR 生成できるかは 対応ブロック一覧 にまとめています。
現時点では、全 opcode の完全実装や Scratch VM と同等の実行モデルは未完です。そのため、
run
サブコマンドは「完全な実行コマンド」ではなく、「コンパイル経路の検証ツール」として考えるのが適切です。
前のページ: CLI
