4.5 KiB
4.5 KiB
AI深層考察: Nyash統一文法アーキテクチャ
🎯 概要
GeminiとCodexに時間無制限で深く考えてもらった、Nyash統一文法アーキテクチャに関する洞察をまとめました。
🔥 Gemini先生の洞察
核心的提言: 宣言的文法定義 + ビルド時コード生成
[ grammar.toml ] ← 宣言的SSoT(Single Source of Truth)
↓
[ build.rs ] ← メタプログラミング層
↓
├─ generated_tokens.rs
├─ generated_keywords.rs
├─ generated_rules.rs
└─ generated_opcodes.rs
重要ポイント
-
真の分離:
UnifiedKeyword構造体は依然として各層を密結合させる。宣言的ファイルからコード生成する方が疎結合を保てる。 -
ゼロコスト抽象化:
- ビルド時生成により実行時オーバーヘッドなし
enumとmatch文で高速ディスパッチ#[inline(always)]で関数呼び出しコストなし
-
コンパイラ駆動開発:
// 新機能追加時、全層でコンパイルエラー発生 // → 実装漏れがなくなる match token { TokenType::Async => // 新しく追加されたので実装必須 _ => // ... } -
他言語からの学び:
- CPython:
Grammar/Tokensファイルから生成 - V8: Ignition(インタプリタ)とTurboFan(JIT)の分離
- rustc: HIR→MIRという段階的表現
- CPython:
💡 Codex先生の洞察
核心的提言: MIRを中心とした統一セマンティクス基盤
# grammar/nyash.yml
tokens:
- name: ME
literal: "me"
soft: true
contexts: ["expr", "pattern"]
deprecated_aliases: ["self"]
ai_hint: "Current object; not assignable."
operators:
- symbol: "+"
name: add
precedence: 110
associativity: left
overloads:
- types: ["i64","i64"] -> "i64"
lower: MIR.AddI64
- types: ["String","String"] -> "String"
lower: MIR.Concat
実装戦略
-
単一仕様ファイル:
grammar/nyash.ymlに全て定義- キーワード、演算子、文法、型、強制変換
- MIRローリング、VMオペコード、JITパターン
- 非推奨、AIヒント
-
コード生成クレート:
crates/nygrammar-gen- Perfect hash関数でO(1)キーワード認識
- Pratt/PEGパーサーテーブル生成
- 型ディスパッチマトリックス生成
-
MIRが真実の基盤:
pub fn add(lhs: Value, rhs: Value) -> Result<MIRNode> { // 生成されたfast-pathを使用 // 常にMIRノードを返す } -
性能最適化:
- ビルド時にすべて決定(実行時検索なし)
- インラインキャッシュで呼び出しサイト最適化
- ソフトキーワードはパーサー状態で判定
段階的移行計画
- Phase 0: ベースラインテスト(現状記録)
- Phase 1: 正準MIR定義
- Phase 2: KeywordRegistry生成
- Phase 3: UnifiedSemantics導入
- Phase 4: パーサー統一
- Phase 5: バックエンドマッピング
- Phase 6: 非推奨警告
- Phase 7: ツール/ドキュメント生成
🎯 統合された知見
両AIの提言を統合すると:
1. 宣言的定義 + コード生成が最強
- YAML/TOMLで文法を宣言的に定義
- build.rsでRustコードを生成
- 実行時オーバーヘッドゼロ
2. MIRを中心とした統一
- すべてのセマンティクスはMIRで表現
- 各バックエンドはMIRを実行/コンパイル
- 一貫性が自動的に保証される
3. AI友好的な設計
- 機械可読な仕様ファイル
- 豊富な例とエラーカタログ
- 自動生成されるドキュメント
4. 拡張性への配慮
- 新バックエンド追加が容易
- プラグインによる拡張可能
- 後方互換性の維持
📋 実装優先順位
- 最優先:
grammar/nyash.ymlの初版作成 - 高優先:
build.rsによるトークン生成 - 中優先: MIR統一とUnifiedSemantics
- 低優先: JIT最適化ヒント
🚀 期待される効果
- 保守性: 新機能追加が1箇所の修正で完了
- 一貫性: 全層で同じセマンティクス保証
- 性能: ビルド時最適化で実行時コストなし
- AI対応: LLMが正確にNyashコードを生成
これらの深い洞察により、Nyashの統一文法アーキテクチャは強固な基盤の上に構築されることになります。