Parser Integration - Pythonパーサー統合
📋 概要
PythonのAST(抽象構文木)をHakoruneで扱うためのパーサー統合設計です。
📁 ファイル一覧
実装計画
- implementation-plan.md - PythonパーサーBox実装計画
- builtin-box-flow.md - ビルトインBox実装フロー
🎯 目的
PythonパーサーBoxの役割
-
Python AST解析
- Pythonコードをパース
- AST(抽象構文木)を生成
- Hakorune内で操作可能な形式に変換
-
型推論・スコープ解決
- Python動的型の静的解析
- スコープ情報の抽出
- 型アノテーション活用
-
Hakorune MIRへの変換
- Python AST → Hakorune AST
- Hakorune AST → MIR
- 最適化情報の付与
🏗️ アーキテクチャ
PythonParserBox(計画)
box PythonParserBox {
// パース
parse(code: StringBox) -> ASTBox
// AST操作
visit_nodes(ast: ASTBox, visitor: FunctionBox)
get_node_type(node: ASTBox) -> StringBox
// 変換
to_hakorune_ast(ast: ASTBox) -> HakoruneASTBox
to_mir(ast: ASTBox) -> MIRBox
}
ビルトインBox統合フロー
-
パーサー初期化
- CPython APIの初期化
- パーサーモジュールのロード
-
パース実行
- コード文字列を受け取り
- Python ASTを生成
- エラーハンドリング
-
AST変換
- Python AST → Hakorune AST
- 型情報の付与
- スコープ情報の追加
-
MIR生成
- Hakorune AST → MIR
- 最適化パスの適用
🔧 技術的課題
1. Python AST API統合
- CPython C API使用
astモジュールとの連携- メモリ管理(参照カウント)
2. 型推論
- Python動的型の静的解析
- 型アノテーション活用
- 型推論アルゴリズム
3. スコープ解決
- Pythonのスコープルール(LEGB)
- Hakoruneスコープへのマッピング
- クロージャ・ネストスコープ対応
4. 構文マッピング
- Python構文 → Hakorune構文
- イディオム変換
- サポートする機能範囲の決定
📊 実装ステータス
| コンポーネント | ステータス | 備考 |
|---|---|---|
| パーサーBox設計 | ✅ 完了 | 設計書完成 |
| CPython API統合 | 📅 未実装 | - |
| AST変換 | 📅 未実装 | - |
| 型推論 | 📅 未実装 | - |
| MIR生成 | 📅 未実装 | - |
⚠️ リスク要因
-
CPython依存
- CPythonバージョン互換性
- プラットフォーム固有の問題
-
型推論の精度
- Python動的型の限界
- 型アノテーションの不完全性
-
パフォーマンス
- パース・変換のオーバーヘッド
- 大規模コードベースでの性能