pnsk-lab filling

はじめに / セットアップ / CLI / 対応ブロック一覧

xyo-rust の処理は、大きく分けると 4 段階です。

  1. .sb3 から project.json を取り出す
  2. Scratch プロジェクト全体を Rust の構造体へ変換する
  3. hat block を起点にスレッド単位の中間表現へ変換する
  4. 一部のスレッドを 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

Valid HTML 4.01 Valid CSS