feat(joinir): Phase 51 Field access / NewBox 式タイプ拡張
JoinIR Frontend の式タイプを拡張し、Field access と NewBox のパースと MIR 変換をサポート。 ## 新機能 ### Field access (me.tokens 等) - expr.rs に "Field" タイプハンドラ追加 - JoinInst::FieldAccess バリアント追加 - MIR 変換: FieldAccess → BoxCall (getter pattern) ### NewBox (new ArrayBox() 等) - expr.rs に "NewBox" タイプハンドラ追加 - JoinInst::NewBox バリアント追加 - MIR 変換: NewBox → MirInstruction::NewBox ## 修正ファイル - src/mir/join_ir/mod.rs: JoinInst 拡張 - src/mir/join_ir/frontend/ast_lowerer/expr.rs: パース対応 - src/mir/join_ir_vm_bridge/convert.rs: MIR 変換 - src/mir/join_ir_runner.rs: ハンドラ追加 - src/mir/join_ir/json.rs: JSON シリアライズ ## 注意 print_tokens/array_filter の JoinIR 完走には Phase 52 で JSON 生成側 (LoopFrontendBinding) の修正が必要。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -322,6 +322,24 @@ pub enum JoinInst {
|
||||
args: Vec<VarId>,
|
||||
},
|
||||
|
||||
/// Phase 51: フィールドアクセス
|
||||
/// object.field の構造を JoinIR で表現
|
||||
/// MIR 変換時に Load 命令に変換
|
||||
FieldAccess {
|
||||
dst: VarId,
|
||||
object: VarId,
|
||||
field: String,
|
||||
},
|
||||
|
||||
/// Phase 51: Box インスタンス生成
|
||||
/// new BoxName(args...) の構造を JoinIR で表現
|
||||
/// MIR 変換時に NewBox 命令に変換
|
||||
NewBox {
|
||||
dst: VarId,
|
||||
box_name: String,
|
||||
args: Vec<VarId>,
|
||||
},
|
||||
|
||||
/// Phase 41-4: 深いネスト if の複数変数 merge(else なし)
|
||||
///
|
||||
/// # Pattern
|
||||
|
||||
Reference in New Issue
Block a user