56 lines
1.4 KiB
Markdown
56 lines
1.4 KiB
Markdown
|
|
# REPL (Read-Eval-Print Loop) モード
|
|||
|
|
Status: Idea
|
|||
|
|
Created: 2025-08-25
|
|||
|
|
Priority: Medium
|
|||
|
|
Related: CLI機能拡張
|
|||
|
|
|
|||
|
|
## 概要
|
|||
|
|
Nyashの対話的実行環境。Pythonのような即座にコードを試せる環境を提供。
|
|||
|
|
|
|||
|
|
## 想定される使用例
|
|||
|
|
```bash
|
|||
|
|
$ nyash --repl
|
|||
|
|
Nyash REPL v1.0.0
|
|||
|
|
>>> local x = 42
|
|||
|
|
>>> print(x + 8)
|
|||
|
|
50
|
|||
|
|
>>> box Point { init { x, y } }
|
|||
|
|
>>> local p = new Point()
|
|||
|
|
>>> p.x = 10
|
|||
|
|
>>> p.y = 20
|
|||
|
|
>>> print(p)
|
|||
|
|
Point { x: 10, y: 20 }
|
|||
|
|
>>> exit()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 実装案
|
|||
|
|
### Phase 1: 基本REPL
|
|||
|
|
- 単一行の評価と実行
|
|||
|
|
- 変数の永続化
|
|||
|
|
- 基本的なエラーハンドリング
|
|||
|
|
|
|||
|
|
### Phase 2: 高度な機能
|
|||
|
|
- 複数行入力(継続行)のサポート
|
|||
|
|
- ヒストリー機能(上下キーで履歴)
|
|||
|
|
- タブ補完(変数名、メソッド名)
|
|||
|
|
- `.help`、`.clear`などのメタコマンド
|
|||
|
|
|
|||
|
|
### Phase 3: デバッグ統合
|
|||
|
|
- ブレークポイント設定
|
|||
|
|
- 変数の詳細表示
|
|||
|
|
- メモリ使用状況の確認
|
|||
|
|
|
|||
|
|
## 技術的考慮事項
|
|||
|
|
- 現在のインタープリター構造との統合
|
|||
|
|
- 状態管理(グローバルスコープの扱い)
|
|||
|
|
- rustyline等のREPLライブラリの活用
|
|||
|
|
|
|||
|
|
## 実装タイミング
|
|||
|
|
- [ ] 基本的な開発ツールが整った後
|
|||
|
|
- [ ] ユーザーからの要望が多い場合
|
|||
|
|
- [ ] 教育用途での需要が高まった場合
|
|||
|
|
|
|||
|
|
## 参考
|
|||
|
|
- Python REPL
|
|||
|
|
- Node.js REPL
|
|||
|
|
- Rust playground(Web版も検討)
|