/*! * Nyash Interpreter - Modular Rust Implementation * * Refactored from massive 2,633-line interpreter.rs into logical modules * Everything is Box philosophy with clean separation of concerns */ // Import all necessary dependencies use crate::ast::{ASTNode, CatchClause}; use crate::box_trait::{NyashBox, StringBox, IntegerBox, BoolBox, VoidBox, ArrayBox, ResultBox, ErrorBox, BoxCore}; use crate::boxes::FutureBox; use crate::instance_v2::InstanceBox; use crate::channel_box::ChannelBox; use crate::boxes::math_box::{MathBox, RangeBox}; use crate::boxes::time_box::{TimeBox, TimerBox}; use crate::boxes::map_box::MapBox; use crate::boxes::random_box::RandomBox; use crate::boxes::sound_box::SoundBox; use crate::boxes::debug_box::DebugBox; use crate::method_box::MethodBox; // WASM-specific Box types (conditionally included) #[cfg(target_arch = "wasm32")] use crate::boxes::web::{WebDisplayBox, WebConsoleBox, WebCanvasBox}; use crate::finalization; use crate::exception_box; use std::collections::HashMap; // Module declarations mod async_methods; mod box_methods; mod core; mod expressions; mod statements; mod functions; mod objects; mod io; mod methods; mod math_methods; mod system_methods; mod web_methods; mod special_methods; // Main interpreter implementation - will be moved from interpreter.rs pub use core::NyashInterpreter; /// 実行制御フロー #[derive(Debug)] pub enum ControlFlow { None, Break, Return(Box), Throw(Box), } /// コンストラクタ実行コンテキスト #[derive(Debug, Clone)] pub struct ConstructorContext { pub class_name: String, pub parent_class: Option, } /// Box宣言を保持する構造体 #[derive(Debug, Clone)] pub struct BoxDeclaration { pub name: String, pub fields: Vec, pub methods: HashMap, pub constructors: HashMap, pub init_fields: Vec, pub weak_fields: Vec, // 🔗 weak修飾子が付いたフィールドのリスト pub is_interface: bool, pub extends: Vec, // 🚀 Multi-delegation: Changed from Option to Vec pub implements: Vec, pub type_parameters: Vec, // 🔥 ジェネリクス型パラメータ } /// 🔥 Static Box定義を保持する構造体 #[derive(Debug, Clone)] pub struct StaticBoxDefinition { pub name: String, pub fields: Vec, pub methods: HashMap, pub init_fields: Vec, pub weak_fields: Vec, // 🔗 weak修飾子が付いたフィールドのリスト pub static_init: Option>, // static { } ブロック pub extends: Vec, // 🚀 Multi-delegation: Changed from Option to Vec pub implements: Vec, pub type_parameters: Vec, /// 初期化状態 pub initialization_state: StaticBoxState, } /// 🔥 Static Box初期化状態 #[derive(Debug, Clone, PartialEq)] pub enum StaticBoxState { NotInitialized, // 未初期化 Initializing, // 初期化中(循環参照検出用) Initialized, // 初期化完了 } /// 関数宣言を保持する構造体 #[derive(Debug, Clone)] pub struct FunctionDeclaration { pub name: String, pub params: Vec, pub body: Vec, } // Re-export core interpreter types pub use core::*; // Import and re-export stdlib for interpreter modules pub use crate::stdlib::BuiltinStdlib;