Files
hakorune/docs/phases/phase-10.7/workbench/IR_SCHEMA_MIN.md

1.4 KiB
Raw Blame History

CorePy IR 最小スキーマC2草案

目的: Phase 1 の End-to-End を最短で通すための暫定IR。将来は構造化・拡張with/try/comp/async等

JSON 形式(暫定)

{
  "module": {
    "functions": [
      {
        "name": "main",                 // 省略可(既定: "main"
        "return_value": 0,               // 省略可bodyと排他
        "body": [                        // 省略可return_valueと排他
          { "Return": { "value": 0 } }
        ]
      }
    ]
  }
}

ショートカット(デバッグ/ブリッジ用)

{ "nyash_source": "static box Generated { main() { return 0 } }" }

変換規則(最小)

  • module.functions[0] だけを見る(複数関数は将来対応)
  • name があれば static box Generated { <name>() { ... } }
  • return_value が数値/文字列なら return <value> を生成
  • body があれば先頭の Return.value を探し、return <value> を生成
  • 上記が無ければ return 0

将来(予約)

  • statements: If/While/For/Assign/Expr などの節を追加
  • expressions: BinOp/Call/Name/Constant などを構造化
  • functions配列の複数対応、クロージャは別Box化の方針を検討

注意: All-or-Nothing 原則のもと、未対応ードはCompiler側で明示的にエラーにする現段階では未実装のため、return 0にフォールバックするが、C2終盤でStrict化する