Phase 12.7-B 基本糖衣構文・最小導入 予定

目的
- セルフホスティング前に、安全な最小糖衣（basic）を段階導入。
- 挙動は正規ASTへ正規化してから既存パイプラインに渡す（可逆前提）。

範囲（basic 初期スコープ）
- 追加トークン: `|>`, `?.`, `??`, `+=`, `-=`, `*=`, `/=`, `..`
- 正規化ルール:
  - `x |> f` → `f(x)`
  - `x?.y` → `tmp=x; tmp!=null ? tmp.y : null`
  - `x ?? y` → `x!=null ? x : y`
  - `a += b` 等 → `a = a + b` 等
  - `a..b` → Range（ArrayBox生成）に正規化（最小仕様）
- 高階演算子（`/:`, `\:`, `//`）は衝突回避のため当面見送り

実装タスク（Week 1）
1) tokenizer: 2文字演算子を長い順優先で追加（`??`, `?.`, `|>`, `+=`, …, `..`）
2) parser/sugar.rs: `apply_sugar(ast, &SugarConfig)` の骨組み＋上記4種の正規化
3) config: `nyash.toml [syntax] sugar_level=none|basic|full` 読み込み→`SugarConfig`
4) パーサ統合: `NyashParser` → 生成後に `apply_sugar` を呼ぶ（basicのみON）
5) テスト: `tests/sugar_basic_test.rs` と `tools/smoke_vm_jit.sh` に `NYASH_SYNTAX_SUGAR_LEVEL=basic`
6) ドキュメント: phase-12.7 README に basic 実装済みの注記

実装タスク（Week 2）
7) 分割代入（最小）: Map/Array への展開のみ、正規ASTへ分解
8) ラベル付き引数: ひとまず MapBox 経由へ正規化（将来のキーワード引数に備える）
9) ANCP トランスコーダ（別ツール）雛形: encode/decode、文字列/コメント保護、位置マッピング

安全策
- 既定: `sugar_level=none`（明示のみ）。開発では `basic` を個別ON。
- 可逆性: `SpanMapping` を保持（エラー位置を元コードへ戻す）
- E2E 影響なし: 正規ASTに落としてから既存実装へ渡す

完了条件（basic）
- `|>`, `?.`, `??`, 複合代入、`..` の正規化が安定
- ON/OFF で `tools/smoke_vm_jit.sh` が通過
- sugar 基本テストが通る（正規実行結果が一致）

注意
- `//` はコメントと衝突するため、初期スコープでは採用しない
- パイプラインのメソッド呼出し規約（`data |> me.f` など）はドキュメントで明示

