feat(joinir): Phase 213-2 Step 2-2 & 2-3 Data structure extensions
Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization. Changes: 1. PatternPipelineContext: - Added loop_condition: Option<ASTNode> - Added loop_body: Option<Vec<ASTNode>> - Added loop_update_summary: Option<LoopUpdateSummary> - Updated build_pattern_context() for Pattern 3 2. CarrierUpdateInfo: - Added then_expr: Option<ASTNode> - Added else_expr: Option<ASTNode> - Updated analyze_loop_updates() with None defaults Status: Phase 213-2 Steps 2-2 & 2-3 complete Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
This commit is contained in:
78
CLAUDE.md
78
CLAUDE.md
@ -20,14 +20,14 @@
|
||||
#### 🔍 **MIRデバッグ完全ガイド**(超重要!)
|
||||
```bash
|
||||
# 基本MIR確認(最優先!)
|
||||
./target/release/nyash --dump-mir program.hako
|
||||
NYASH_VM_DUMP_MIR=1 ./target/release/nyash program.hako
|
||||
./target/release/hakorune --dump-mir program.hako
|
||||
NYASH_VM_DUMP_MIR=1 ./target/release/hakorune program.hako
|
||||
|
||||
# 詳細MIR + エフェクト情報
|
||||
./target/release/nyash --dump-mir --mir-verbose --mir-verbose-effects program.hako
|
||||
./target/release/hakorune --dump-mir --mir-verbose --mir-verbose-effects program.hako
|
||||
|
||||
# JSON形式で詳細解析
|
||||
./target/release/nyash --emit-mir-json mir.json program.hako
|
||||
./target/release/hakorune --emit-mir-json mir.json program.hako
|
||||
jq '.functions[0].blocks' mir.json # ブロック構造確認
|
||||
|
||||
# Option C デバッグ(PHI関連)
|
||||
@ -62,7 +62,7 @@ NYASH_JOINIR_DEBUG=1 ./target/release/hakorune program.hako 2>&1 | grep "\[trace
|
||||
NYASH_MIR_TEST_DUMP=1 cargo test --release TEST_NAME 2>&1 > /tmp/mir_dump.log
|
||||
|
||||
# VM実行トレース
|
||||
NYASH_CLI_VERBOSE=1 ./target/release/nyash program.hako
|
||||
NYASH_CLI_VERBOSE=1 ./target/release/hakorune program.hako
|
||||
|
||||
# 決定性テスト(3回実行して一貫性確認)
|
||||
for i in 1 2 3; do
|
||||
@ -224,7 +224,7 @@ tools/smokes/v2/run.sh --profile quick --filter "<glob>"
|
||||
bash tools/smokes/v2/profiles/quick/core/selfhost_mir_m3_jump_vm.sh
|
||||
|
||||
# 単発実行(参考)
|
||||
./target/release/nyash --backend vm apps/APP/main.hako
|
||||
./target/release/hakorune --backend vm apps/APP/main.hako
|
||||
```
|
||||
|
||||
#### ⚡ llvmlite ライン(LLVMハーネス)
|
||||
@ -245,10 +245,10 @@ tools/smokes/v2/run.sh --profile integration --filter "<glob>"
|
||||
# 例: --filter "vm_llvm_*" # VM/LLVM比較系のみ
|
||||
|
||||
# 単発実行
|
||||
NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm apps/tests/peek_expr_block.hako
|
||||
NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm apps/tests/peek_expr_block.hako
|
||||
|
||||
# 有効化確認
|
||||
./target/release/nyash --version | rg -i 'features.*llvm'
|
||||
./target/release/hakorune --version | rg -i 'features.*llvm'
|
||||
```
|
||||
|
||||
**💡 ポイント**:
|
||||
@ -403,26 +403,26 @@ Nyashは「Everything is Box」。実装・最適化・検証のすべてを「
|
||||
### 🎯 **2本柱実行方式** (推奨!)
|
||||
```bash
|
||||
# 🔧 開発・デバッグ・検証用 (Rust VM)
|
||||
./target/release/nyash program.hako
|
||||
./target/release/nyash --backend vm program.hako
|
||||
./target/release/hakorune program.hako
|
||||
./target/release/hakorune --backend vm program.hako
|
||||
|
||||
# ⚡ 本番・最適化・配布用 (LLVM)
|
||||
./target/release/nyash --backend llvm program.hako
|
||||
./target/release/hakorune --backend llvm program.hako
|
||||
|
||||
# 🛡️ プラグインエラー対策
|
||||
NYASH_DISABLE_PLUGINS=1 ./target/release/nyash program.hako
|
||||
NYASH_DISABLE_PLUGINS=1 ./target/release/hakorune program.hako
|
||||
|
||||
# 🔍 詳細診断
|
||||
NYASH_CLI_VERBOSE=1 ./target/release/nyash program.hako
|
||||
NYASH_CLI_VERBOSE=1 ./target/release/hakorune program.hako
|
||||
```
|
||||
|
||||
### 🚀 **Phase 15 セルフホスティング専用**
|
||||
```bash
|
||||
# JSON v0ブリッジ(PyVM特殊用途)
|
||||
NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
NYASH_SELFHOST_EXEC=1 ./target/release/hakorune program.hako
|
||||
|
||||
# using処理確認
|
||||
./target/release/nyash --enable-using program_with_using.hako
|
||||
./target/release/hakorune --enable-using program_with_using.hako
|
||||
|
||||
# ラウンドトリップテスト
|
||||
./tools/ny_roundtrip_smoke.sh
|
||||
@ -434,10 +434,10 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
cargo build --release
|
||||
|
||||
# 開発・デバッグ実行(Rust VM)
|
||||
./target/release/nyash program.hako
|
||||
./target/release/hakorune program.hako
|
||||
|
||||
# 本番・最適化実行(LLVM)
|
||||
./target/release/nyash --backend llvm program.hako
|
||||
./target/release/hakorune --backend llvm program.hako
|
||||
```
|
||||
|
||||
### 🪟 Windows版
|
||||
@ -455,7 +455,7 @@ target/x86_64-pc-windows-msvc/release/nyash.exe
|
||||
# TODO: VM/LLVMベースのWASM実装に移行予定
|
||||
|
||||
# LLVM AOTコンパイル(実験的)
|
||||
./target/release/nyash --backend llvm program.hako # 実行時最適化
|
||||
./target/release/hakorune --backend llvm program.hako # 実行時最適化
|
||||
```
|
||||
|
||||
### 🎯 **2本柱ビルド方法** (2025-09-28更新)
|
||||
@ -473,20 +473,20 @@ cargo build --release --features llvm
|
||||
```bash
|
||||
# 1. Rust VM実行 ✅(開発・デバッグ用)
|
||||
cargo build --release
|
||||
./target/release/nyash program.hako
|
||||
./target/release/hakorune program.hako
|
||||
|
||||
# 2. LLVM実行 ✅(本番・最適化用, llvmliteハーネス)
|
||||
cargo build --release --features llvm
|
||||
NYASH_LLVM_USE_HARNESS=1 ./target/release/nyash --backend llvm program.hako
|
||||
NYASH_LLVM_USE_HARNESS=1 ./target/release/hakorune --backend llvm program.hako
|
||||
|
||||
# 3. プラグインテスト実証済み ✅
|
||||
# CounterBox
|
||||
echo 'local c = new CounterBox(); c.inc(); c.inc(); print(c.get())' > test.hako
|
||||
./target/release/nyash --backend llvm test.hako
|
||||
./target/release/hakorune --backend llvm test.hako
|
||||
|
||||
# StringBox
|
||||
echo 'local s = new StringBox(); print(s.concat("Hello"))' > test.hako
|
||||
./target/release/nyash test.hako
|
||||
./target/release/hakorune test.hako
|
||||
|
||||
```
|
||||
|
||||
@ -501,19 +501,19 @@ echo 'local s = new StringBox(); print(s.concat("Hello"))' > test.hako
|
||||
|
||||
```bash
|
||||
# 🎯 基本実行(まずこれ)- Rust VM
|
||||
./target/release/nyash program.hako
|
||||
./target/release/hakorune program.hako
|
||||
|
||||
# ⚡ 本番・最適化実行 - LLVM
|
||||
./target/release/nyash --backend llvm program.hako
|
||||
./target/release/hakorune --backend llvm program.hako
|
||||
|
||||
# 🛡️ プラグインエラー対策(緊急時のみ)
|
||||
NYASH_DISABLE_PLUGINS=1 ./target/release/nyash program.hako
|
||||
NYASH_DISABLE_PLUGINS=1 ./target/release/hakorune program.hako
|
||||
|
||||
# 🔍 詳細診断情報
|
||||
NYASH_CLI_VERBOSE=1 ./target/release/nyash program.hako
|
||||
NYASH_CLI_VERBOSE=1 ./target/release/hakorune program.hako
|
||||
|
||||
# ⚠️ PyVM特殊用途(JSON v0ブリッジ・セルフホスト専用)
|
||||
NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
NYASH_SELFHOST_EXEC=1 ./target/release/hakorune program.hako
|
||||
```
|
||||
|
||||
### 🚨 **Phase 15戦略確定**
|
||||
@ -532,7 +532,7 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
| ~~`NYASH_VM_USE_PY=1`~~ | ⚠️ | PyVM特殊用途 | ~~開発者明示のみ~~ |
|
||||
| ~~`NYASH_ENABLE_USING=1`~~ | ✅ | using処理 | ~~デフォルト化済み~~ |
|
||||
|
||||
**💡 2本柱戦略**:基本は`./target/release/nyash`(Rust VM)、本番は`--backend llvm`!
|
||||
**💡 2本柱戦略**:基本は`./target/release/hakorune`(Rust VM)、本番は`--backend llvm`!
|
||||
|
||||
**⚠️ PyVM使用制限**: [PyVM使用ガイドライン](docs/reference/pyvm-usage-guidelines.md)で適切な用途を確認
|
||||
|
||||
@ -550,7 +550,7 @@ NYASH_SELFHOST_EXEC=1 ./target/release/nyash program.hako
|
||||
# 基本using動作(環境変数・フラグ不要!)
|
||||
echo 'using nyashstd' > test.hako
|
||||
echo 'console.log("Hello!")' >> test.hako
|
||||
./target/release/nyash test.hako
|
||||
./target/release/hakorune test.hako
|
||||
# 出力: Hello!
|
||||
|
||||
# 実装箇所
|
||||
@ -568,17 +568,17 @@ src/runner/modes/common_util/resolve/strip.rs # コード生成
|
||||
## 🧪 テストスクリプト参考集(既存のを活用しよう!)
|
||||
```bash
|
||||
# 基本的なテスト
|
||||
./target/release/nyash local_tests/hello.hako # Hello World
|
||||
./target/release/nyash local_tests/test_array_simple.hako # ArrayBox
|
||||
./target/release/nyash apps/tests/string_ops_basic.hako # StringBox
|
||||
./target/release/hakorune local_tests/hello.hako # Hello World
|
||||
./target/release/hakorune local_tests/test_array_simple.hako # ArrayBox
|
||||
./target/release/hakorune apps/tests/string_ops_basic.hako # StringBox
|
||||
|
||||
# MIR確認用テスト
|
||||
./target/release/nyash --dump-mir apps/tests/loop_min_while.hako
|
||||
./target/release/nyash --dump-mir apps/tests/esc_dirname_smoke.hako
|
||||
./target/release/hakorune --dump-mir apps/tests/loop_min_while.hako
|
||||
./target/release/hakorune --dump-mir apps/tests/esc_dirname_smoke.hako
|
||||
|
||||
# 統一Call テスト(Phase A完成!)
|
||||
NYASH_MIR_UNIFIED_CALL=1 ./target/release/nyash --dump-mir test_simple_call.hako
|
||||
NYASH_MIR_UNIFIED_CALL=1 ./target/release/nyash --emit-mir-json test.json test.hako
|
||||
NYASH_MIR_UNIFIED_CALL=1 ./target/release/hakorune --dump-mir test_simple_call.hako
|
||||
NYASH_MIR_UNIFIED_CALL=1 ./target/release/hakorune --emit-mir-json test.json test.hako
|
||||
```
|
||||
|
||||
## ⚡ 重要な設計原則
|
||||
@ -903,9 +903,9 @@ NYASH_SKIP_TOML_ENV=1 ./tools/smoke_plugins.sh
|
||||
#### パーサー無限ループ対策
|
||||
```bash
|
||||
# 🔥 デバッグ燃料でパーサー制御
|
||||
./target/release/nyash --debug-fuel 1000 program.hako # 1000回制限
|
||||
./target/release/nyash --debug-fuel unlimited program.hako # 無制限
|
||||
./target/release/nyash program.hako # デフォルト10万回
|
||||
./target/release/hakorune --debug-fuel 1000 program.hako # 1000回制限
|
||||
./target/release/hakorune --debug-fuel unlimited program.hako # 無制限
|
||||
./target/release/hakorune program.hako # デフォルト10万回
|
||||
```
|
||||
|
||||
**対応状況**: must_advance!マクロでパーサー制御完全実装済み✅
|
||||
|
||||
Reference in New Issue
Block a user