feat(joinir): Phase 88 - Pattern4 continue + variable step increment

Continue Pattern 拡張:
- then側の i=i+const 差分加算 + acc更新を許可
- continue_pattern.rs:193 で可変ステップ検出

Dev Router 許可:
- ast_lowerer/mod.rs:92 で normalized_dev feature時に新パターンを有効化

Fixtures & Tests:
- jsonparser_unescape_string_step2_min fixture追加(submodule)
- normalized_joinir_min.rs に shape テスト追加
- shapes.rs に expected shape 定義

Documentation:
- joinir-architecture-overview.md に Phase 88 到達点を追記

Impact:
- Pattern4 continue + 可変インクリメント(i+=1 or i+=2)対応
- _unescape_string 制御構造の土台確立
- normalized_dev tests PASS

Next: _unescape_string 残り複合ループ対応

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-14 00:29:56 +09:00
parent 8a8c90fc74
commit b71a18495d
7 changed files with 142 additions and 5 deletions

View File

@ -796,6 +796,33 @@ pub fn build_jsonparser_parse_object_continue_skip_ws_structured_for_normalized_
module
}
/// JsonParser _unescape_string の「i+=2 + continue」コアを Structured で組み立てるヘルパーdev-only
///
/// 実ループ(`tools/hako_shared/json_parser.hako::_unescape_string`)から、
/// 文字列処理を除いて制御構造continue + 可変ステップ更新)だけを抽出した最小フィクスチャ。
///
/// Fixture: docs/private/roadmap2/phases/normalized_dev/fixtures/jsonparser_unescape_string_step2_min.program.json
pub fn build_jsonparser_unescape_string_step2_min_structured_for_normalized_dev() -> JoinModule {
const FIXTURE: &str = include_str!(
"../../../../docs/private/roadmap2/phases/normalized_dev/fixtures/jsonparser_unescape_string_step2_min.program.json"
);
let program_json: serde_json::Value = serde_json::from_str(FIXTURE)
.expect("jsonparser_unescape_string_step2_min fixture should be valid JSON");
let mut lowerer = AstToJoinIrLowerer::new();
let module = lowerer.lower_program_json(&program_json);
if joinir_dev_enabled() && joinir_test_debug_enabled() {
eprintln!(
"[joinir/normalized-dev] jsonparser_unescape_string_step2_min structured module: {:#?}",
module
);
}
module
}
/// まとめて import したいとき用のプレリュード。
pub mod prelude {
pub use super::{
@ -806,6 +833,7 @@ pub mod prelude {
build_jsonparser_parse_object_continue_skip_ws_structured_for_normalized_dev,
build_jsonparser_skip_ws_real_structured_for_normalized_dev,
build_jsonparser_skip_ws_structured_for_normalized_dev,
build_jsonparser_unescape_string_step2_min_structured_for_normalized_dev,
build_pattern2_break_fixture_structured, build_pattern2_minimal_structured,
build_pattern3_if_sum_min_structured_for_normalized_dev,
build_pattern3_if_sum_multi_min_structured_for_normalized_dev,