Files
hakorune/CLAUDE.md
Moe Charm e7f6666917 🎨 feat: EguiBox GUI開発基盤完成 + パーサー無限ループバグ修正
## 🚀 主要機能追加
### EguiBox - GUI開発基盤
- Windows版GUIメモ帳アプリ (simple_notepad.rs, nyash_notepad_jp.rs)
- 日本語フォント対応 (NotoSansJP-VariableFont_wght.ttf)
- BMPアイコン表示システム (c_drive_icon.bmp)
- Windowsエクスプローラー風アプリ (nyash_explorer.rs)
- アイコン抽出システム (test_icon_extraction.rs)

### ビジュアルプログラミング準備
- NyashFlow プロジェクト設計完成 (NYASHFLOW_PROJECT_HANDOVER.md)
- ビジュアルノードプロトタイプ基盤
- WebAssembly対応準備

## 🔧 重大バグ修正
### パーサー無限ループ問題 (3引数メソッド呼び出し)
- 原因: メソッドパラメータ解析ループの予約語処理不備
- 修正: src/parser/mod.rs - 非IDENTIFIERトークンのエラーハンドリング追加
- 効果: "from"等の予約語で適切なエラー報告、ハング→瞬時エラー

### MapBoxハング問題調査
- MapBox+3引数メソッド呼び出し組み合わせ問題特定
- バグレポート作成 (MAPBOX_HANG_BUG_REPORT.md)
- 事前評価vs必要時評価の設計問題明確化

## 🧹 コード品質向上
- box_methods.rs を8モジュールに機能分離
- 一時デバッグコード全削除 (eprintln\!, unsafe等)
- 構文チェック通過確認済み

## 📝 ドキュメント整備
- CLAUDE.md にGUI開発セクション追加
- Gemini/ChatGPT先生相談ログ保存 (sessions/)
- 段階的デバッグ手法確立

## 🎯 次の目標
- must_advance\!マクロ実装 (無限ループ早期検出)
- コマンド引数でデバッグ制御 (--debug-fuel)
- MapBox問題の根本修正

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-10 07:54:03 +09:00

223 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Nyash開発ガイド for Claude
Nyashプログラミング言語開発に必要な情報をまとめたクイックリファレンス。
## 🚀 クイックスタート
### 🐧 Linux/WSL版
```bash
# ビルドと実行
cargo build --release
./target/release/nyash program.nyash
```
### 🪟 Windows版 (NEW!)
```bash
# クロスコンパイルでWindows実行ファイル生成
cargo install cargo-xwin
cargo xwin build --target x86_64-pc-windows-msvc --release
# 生成された実行ファイル (916KB)
target/x86_64-pc-windows-msvc/release/nyash.exe
```
### 🌐 WebAssembly版
```bash
# ブラウザープレイグラウンド
cd projects/nyash-wasm
./build.sh
# nyash_playground.html をブラウザーで開く
```
## 📚 ドキュメント構造
### 🎯 よく使う情報
- **[構文早見表](docs/quick-reference/syntax-cheatsheet.md)** - 基本構文・よくある間違い
- **[演算子一覧](docs/quick-reference/operators-summary.md)** - 実装済み演算子
- **[開発コマンド](docs/quick-reference/development-commands.md)** - build/test/AI相談
### 📊 最新開発状況
- **[実装状況](docs/status/current-implementation.md)** - 完全な機能実装状況
- **[最新成果](docs/status/recent-achievements.md)** - 2025-08-08更新
- **[既知の問題](docs/status/known-issues.md)** - 制限事項・回避策
### 📖 詳細リファレンス
- **[完全リファレンス](docs/reference/)** - 言語仕様詳細
- [予約語一覧](docs/reference/keywords.md)
- [演算子リファレンス](docs/reference/operators.md)
- [ビルトイン型](docs/reference/built-in-boxes.md)
- [MethodBoxinvoke](docs/reference/method-box-reference.md)
- [ジェネリクス](docs/reference/generics-reference.md)
- **[学習ガイド](docs/language-guide/)** - 体系的学習用
### 🎮 実用例・アプリ
- **[実用例](docs/examples/)** - サンプルコード・パターン集
- **実装済みアプリ**: サイコロRPG・統計計算・LISPインタープリター
## ⚡ 重要な設計原則
### 🏗️ Everything is Box
- すべての値がBoxStringBox, IntegerBox, BoolBox等
- ユーザー定義Box: `box ClassName { init { field1, field2 } }`
### 🔄 統一ループ構文
```nyash
// ✅ 唯一の正しい形式
loop(condition) { }
// ❌ 削除済み構文
while condition { } // 使用不可
loop() { } // 使用不可
```
### 🎯 正統派Nyashスタイル2025-08-09実装
```nyash
// 🚀 Static Box Main パターン - エントリーポイントの統一スタイル
static box Main {
init { console, result } // フィールド宣言
main() {
// ここから始まる!他の言語と同じエントリーポイント
me.console = new ConsoleBox()
me.console.log("🎉 Everything is Box!")
// local変数も使用可能
local temp
temp = 42
me.result = temp
return "Revolution completed!"
}
}
```
### 📝 変数宣言厳密化システム2025-08-09実装
```nyash
// 🔥 すべての変数は明示宣言必須!(メモリ安全性・非同期安全性保証)
// ✅ static box内のフィールド
static box Calculator {
init { result, memory } // 明示宣言
calculate() {
me.result = 42 // ✅ フィールドアクセス
local temp // ✅ local変数宣言
temp = me.result * 2
}
}
// ✅ static関数内の所有権移転
static function Factory.create() {
outbox product // 呼び出し側に所有権移転
product = new Item()
return product
}
// ❌ 未宣言変数への代入はエラー
x = 42 // Runtime Error: 未宣言変数 + 修正提案
```
### ⚡ 実装済み演算子Production Ready
```nyash
// 論理演算子(完全実装)
not condition // NOT演算子
a and b // AND演算子
a or b // OR演算子
// 算術演算子
a / b // 除算(ゼロ除算エラー対応済み)
a + b, a - b, a * b // 加算・減算・乗算
```
### ⚠️ 重要な注意点
```nyash
// ✅ 正しい書き方
init { field1, field2 } // カンマ必須CPU暴走防止
// ❌ 間違い
init { field1 field2 } // カンマなし→CPU暴走
```
## 🎨 GUI開発NEW!
### EguiBox - GUIアプリケーション開発
```nyash
// EguiBoxでGUIアプリ作成
local app
app = new EguiBox()
app.setTitle("Nyash GUI App")
app.setSize(800, 600)
// 注意: 現在メインスレッド制約により
// app.run() は特別な実行コンテキストが必要
```
**実装状況**: 基本実装完了、GUI実行コンテキスト対応中
## 🔧 開発サポート
### 🤖 AI相談
```bash
# Gemini CLIで相談
gemini -p "Nyashの実装で困っています..."
```
### 🧪 テスト実行
```bash
# 基本機能テスト
cargo test
# 演算子統合テスト
./target/debug/nyash test_comprehensive_operators.nyash
# 実用アプリテスト
./target/debug/nyash app_dice_rpg.nyash
```
### 🐛 デバッグ
```nyash
// DebugBox活用
DEBUG = new DebugBox()
DEBUG.startTracking()
DEBUG.trackBox(myObject, "説明")
print(DEBUG.memoryReport())
```
## 📚 ドキュメント再編成戦略
### 🎯 現在の課題
- **CLAUDE.md肥大化** (500行) - 必要情報の検索困難
- **情報分散** - 実装状況がCLAUDE.md/current_task/docsに分散
- **参照関係不明確** - ファイル間の相互リンク不足
### 🚀 新構造プラン
```
docs/
├── quick-reference/ # よく使う情報(簡潔)
│ ├── syntax-cheatsheet.md # 構文早見表
│ ├── operators-summary.md # 演算子一覧
│ └── development-commands.md # 開発コマンド集
├── status/ # 最新開発状況
│ ├── current-implementation.md # 実装状況詳細
│ ├── recent-achievements.md # 最新成果
│ └── known-issues.md # 既知の問題
├── reference/ # 完全リファレンス(現存活用)
└── examples/ # 実用例(現存拡充)
```
### ⚡ 実装優先順位
1. **Phase 1**: CLAUDE.md簡潔化500行→150行ハブ
2. **Phase 2**: 基本構造作成・情報移行
3. **Phase 3**: 相互リンク整備・拡充
### 🎉 期待効果
- **検索性**: 必要情報への高速アクセス
- **メンテナンス性**: 責任分離・局所的更新
- **拡張性**: 新機能追加が容易
**📋 詳細**: [DOCUMENTATION_REORGANIZATION_STRATEGY.md](DOCUMENTATION_REORGANIZATION_STRATEGY.md)
---
最終更新: 2025年8月9日 - **🎯 静的Box Mainパターン変数宣言厳密化システム実装完了Gemini先生絶賛の「非常に洗練された設計」達成。メモリ安全性・非同期安全性保証で本格言語レベルに到達**