Files
hakorune/docs/development/roadmap/phases/phase-11.9/UNIFIED-GRAMMAR-DESIGN-SUMMARY.md

3.8 KiB
Raw Blame History

Phase 11.9 統一文法設計 - 総合まとめ

📋 概要

Nyashの各実行層Tokenizer/Parser/Interpreter/MIR/VM/JITで予約語・文法解釈がバラバラに実装されている問題を解決する統一文法アーキテクチャ設計のまとめです。

🎯 核心的な問題

// 現在: 同じ "me" が6箇所で別々に定義
Tokenizer:   "me"  TokenType::ME
Parser:      独自のme処理ロジック
Interpreter: 独自のself参照実装
MIR Builder: LoadLocal(0)への変換
VM:          OP_LOAD_MEの実行
JIT:         LoadFirstParamの生成

💡 提案された解決策

1. 基本アプローチ: 統一文法エンジン

  • 単一の文法定義YAML/TOML
  • 各層が参照する統一API
  • UnifiedSemantics による一貫した実行

2. AI提案: ビルド時コード生成

  • Gemini: 宣言的定義 + build.rs によるコード生成
  • Codex: MIR中心の統一セマンティクス基盤
  • 実行時オーバーヘッドゼロ

3. 箱化による疎結合設計

  • 各層を独立した「箱」として実装
  • 変換箱TransformerBoxパターン
  • パイプライン方式での連結

📊 実装アプローチの比較

アプローチ 利点 欠点 推奨度
統一エンジン シンプル、理解しやすい 実行時オーバーヘッド ★★★
コード生成 高性能、型安全 ビルド複雑化 ★★★★★
完全箱化 究極の疎結合 実装複雑度高 ★★★★

🚀 推奨実装計画

Phase 1: 文法定義ファイル作成

# grammar/nyash.yml
tokens:
  me: { id: 1, category: self_reference }
  from: { id: 2, category: delegation }
  loop: { id: 3, category: control_flow }

operators:
  "+": { precedence: 10, associativity: left }

Phase 2: コード生成基盤

// build.rs
fn generate_from_grammar() {
    // grammar.yml → generated/*.rs
}

Phase 3: 段階的移行

  1. Tokenizer を生成コードに移行
  2. Parser を統一文法に移行
  3. Semantics を一元化
  4. MIR/VM/JIT を統合

🎯 期待される効果

  1. 保守性向上: 新機能追加が1箇所で完了
  2. 一貫性確保: 全層で同じセマンティクス
  3. AI対応改善: LLMが正確なコードを生成
  4. 性能維持: ビルド時最適化でオーバーヘッドなし

📁 作成されたドキュメント

必須ドキュメント(実装に必要)

  1. 統一文法アーキテクチャ設計書 - 基本設計
  2. 統一予約語システム仕様 - 具体的実装仕様
  3. AI深層考察 - Gemini/Codex分析

発展的ドキュメント(参考資料)

  1. Box-First文法アーキテクチャ - 箱化アプローチ
  2. 根切り文法アーキテクチャ - 完全疎結合設計
  3. ゼロ知識文法アーキテクチャ - 究極の分離設計

既存ドキュメント

🔧 次のステップ

  1. grammar/nyash.yml の初版作成
  2. crates/nygrammar-gen の実装開始
  3. Tokenizer の移行から着手
  4. 段階的に全層を統一

📝 結論

コード生成アプローチGemini/Codex推奨を採用し、grammar/nyash.yml を単一の真実の源として、build.rs で各層向けのコードを生成する方式が最も実用的です。

これにより、Nyashの文法が完全に統一され、保守性・一貫性・AI対応すべてが改善されます。