Files
hakorune/src/runner/demos.rs
Selfhosting Dev 73b90a7c28 feat: スモークテストv2実装&Phase 15.5後のプラグイン対応
Phase 15.5 Core Box削除後の新テストシステム構築:

## 実装内容
- スモークテストv2システム完全実装(3段階プロファイル)
- 共通ライブラリ(test_runner/plugin_manager/result_checker/preflight)
- インタープリター層完全削除(約350行)
- PyVM重要インフラ特化保持戦略(JSON v0ブリッジ専用)
- nyash.tomlパス修正(13箇所、プラグイン正常ロード確認)

## 動作確認済み
- 基本算術演算(+, -, *, /)
- 制御構文(if, loop, break, continue)
- 変数代入とスコープ
- プラグインロード(20個の.soファイル)

## 既知の問題
- StringBox/IntegerBoxメソッドが動作しない
  - オブジェクト生成は成功するがメソッド呼び出しでエラー
  - Phase 15.5影響でプラグイン実装が不完全な可能性

## ドキュメント
- docs/development/testing/smoke-tests-v2.md 作成
- docs/reference/pyvm-usage-guidelines.md 作成
- CODEX_QUESTION.md(Codex相談用)作成

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 09:30:42 +09:00

114 lines
4.2 KiB
Rust

//! Runner demo helpers (moved out of mod.rs to reduce file size)
use nyash_rust::ast::ASTNode;
use nyash_rust::box_trait::{AddBox, BoolBox, BoxCore, IntegerBox, NyashBox, StringBox, VoidBox};
// use nyash_rust::interpreter::NyashInterpreter; // Legacy interpreter removed
use nyash_rust::parser::NyashParser;
use nyash_rust::tokenizer::NyashTokenizer;
pub(super) fn demo_basic_boxes() {
println!("\n📦 1. Basic Box Creation:");
let string_box = StringBox::new("Hello, Nyash!".to_string());
let int_box = IntegerBox::new(42);
let bool_box = BoolBox::new(true);
let void_box = VoidBox::new();
println!(" StringBox: {}", string_box.to_string_box().value);
println!(" IntegerBox: {}", int_box.to_string_box().value);
println!(" BoolBox: {}", bool_box.to_string_box().value);
println!(" VoidBox: {}", void_box.to_string_box().value);
println!(
" Box IDs: String={}, Integer={}, Bool={}, Void={}",
string_box.box_id(),
int_box.box_id(),
bool_box.box_id(),
void_box.box_id()
);
}
pub(super) fn demo_box_operations() {
println!("\n🔄 2. Box Operations:");
let left = IntegerBox::new(10);
let right = IntegerBox::new(32);
let add_box = AddBox::new(Box::new(left), Box::new(right));
println!(" 10 + 32 = {}", add_box.to_string_box().value);
let str1 = StringBox::new("Hello, ".to_string());
let str2 = StringBox::new("World!".to_string());
let concat_box = AddBox::new(Box::new(str1), Box::new(str2));
println!(
" \"Hello, \" + \"World!\" = {}",
concat_box.to_string_box().value
);
}
pub(super) fn demo_box_collections() {
println!("\n📚 3. Box Collections:");
println!(" Box collections functionality placeholder");
println!(" (ArrayBox and other collection types will be demonstrated here)");
}
pub(super) fn demo_environment_system() {
println!("\n🌍 4. Environment & Scope Management:");
println!(" Environment demo placeholder - full testing done in interpreter");
}
pub(super) fn demo_tokenizer_system() {
println!("\n🔤 5. Tokenizer System:");
let test_code = "x = 42 + y";
println!(" Input: {}", test_code);
let mut tokenizer = NyashTokenizer::new(test_code);
match tokenizer.tokenize() {
Ok(tokens) => {
println!(" Tokenized {} tokens successfully", tokens.len());
}
Err(e) => println!(" Tokenization error: {}", e),
}
}
pub(super) fn demo_parser_system() {
println!("\n🌳 6. Parser & AST System:");
println!(" 📝 Simple Box Declaration Test:");
let simple_code = r#"
box TestBox {
value
getValue() {
return this.value
}
}
"#;
match NyashParser::parse_from_string(simple_code) {
Ok(ast) => {
println!(" Input: {}", simple_code.trim());
println!(" AST: {}", ast);
if let ASTNode::Program { statements, .. } = &ast {
println!(" Program has {} statements", statements.len());
for (i, stmt) in statements.iter().enumerate() {
println!(" [{}] {}", i, stmt.info());
}
}
}
Err(e) => println!(" Parser error: {}", e),
}
}
pub(super) fn demo_interpreter_system() {
println!("\n🎭 7. Interpreter System:");
println!(" ⚠️ Legacy interpreter removed - use VM or LLVM backends instead");
println!(" 💡 Try: ./target/release/nyash --backend vm program.nyash");
println!(" 💡 Try: ./target/release/nyash --backend llvm program.nyash");
}
/// Run all demo sections (moved from runner/mod.rs)
pub(super) fn run_all_demos() {
println!("🦀 Nyash Rust Implementation - Everything is Box! 🦀");
println!("====================================================");
demo_basic_boxes();
demo_box_operations();
demo_box_collections();
demo_environment_system();
demo_tokenizer_system();
demo_parser_system();
// demo_interpreter_system(); // Disabled - legacy interpreter removed
println!("\n🎉 All Box operations completed successfully!");
println!("Memory safety guaranteed by Rust's borrow checker! 🛡️");
}