122 lines
3.0 KiB
Markdown
122 lines
3.0 KiB
Markdown
|
|
# Parser Integration - Pythonパーサー統合
|
|||
|
|
|
|||
|
|
## 📋 概要
|
|||
|
|
|
|||
|
|
PythonのAST(抽象構文木)をHakoruneで扱うためのパーサー統合設計です。
|
|||
|
|
|
|||
|
|
## 📁 ファイル一覧
|
|||
|
|
|
|||
|
|
### 実装計画
|
|||
|
|
- **[implementation-plan.md](implementation-plan.md)** - PythonパーサーBox実装計画
|
|||
|
|
- **[builtin-box-flow.md](builtin-box-flow.md)** - ビルトインBox実装フロー
|
|||
|
|
|
|||
|
|
## 🎯 目的
|
|||
|
|
|
|||
|
|
### PythonパーサーBoxの役割
|
|||
|
|
|
|||
|
|
1. **Python AST解析**
|
|||
|
|
- Pythonコードをパース
|
|||
|
|
- AST(抽象構文木)を生成
|
|||
|
|
- Hakorune内で操作可能な形式に変換
|
|||
|
|
|
|||
|
|
2. **型推論・スコープ解決**
|
|||
|
|
- Python動的型の静的解析
|
|||
|
|
- スコープ情報の抽出
|
|||
|
|
- 型アノテーション活用
|
|||
|
|
|
|||
|
|
3. **Hakorune MIRへの変換**
|
|||
|
|
- Python AST → Hakorune AST
|
|||
|
|
- Hakorune AST → MIR
|
|||
|
|
- 最適化情報の付与
|
|||
|
|
|
|||
|
|
## 🏗️ アーキテクチャ
|
|||
|
|
|
|||
|
|
### PythonParserBox(計画)
|
|||
|
|
|
|||
|
|
```hakorune
|
|||
|
|
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統合フロー
|
|||
|
|
|
|||
|
|
1. **パーサー初期化**
|
|||
|
|
- CPython APIの初期化
|
|||
|
|
- パーサーモジュールのロード
|
|||
|
|
|
|||
|
|
2. **パース実行**
|
|||
|
|
- コード文字列を受け取り
|
|||
|
|
- Python ASTを生成
|
|||
|
|
- エラーハンドリング
|
|||
|
|
|
|||
|
|
3. **AST変換**
|
|||
|
|
- Python AST → Hakorune AST
|
|||
|
|
- 型情報の付与
|
|||
|
|
- スコープ情報の追加
|
|||
|
|
|
|||
|
|
4. **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生成 | 📅 未実装 | - |
|
|||
|
|
|
|||
|
|
## ⚠️ リスク要因
|
|||
|
|
|
|||
|
|
1. **CPython依存**
|
|||
|
|
- CPythonバージョン互換性
|
|||
|
|
- プラットフォーム固有の問題
|
|||
|
|
|
|||
|
|
2. **型推論の精度**
|
|||
|
|
- Python動的型の限界
|
|||
|
|
- 型アノテーションの不完全性
|
|||
|
|
|
|||
|
|
3. **パフォーマンス**
|
|||
|
|
- パース・変換のオーバーヘッド
|
|||
|
|
- 大規模コードベースでの性能
|
|||
|
|
|
|||
|
|
## 🔗 関連ドキュメント
|
|||
|
|
|
|||
|
|
- [Phase 20 メインREADME](../README.md)
|
|||
|
|
- [Planning](../planning/)
|
|||
|
|
- [Core Implementation](../core-implementation/)
|