92 lines
3.1 KiB
Plaintext
92 lines
3.1 KiB
Plaintext
|
|
================================================================================
|
|||
|
|
Nyash文法改革 - 実装向け要約
|
|||
|
|
2025-09-03
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
【最重要決定事項】
|
|||
|
|
|
|||
|
|
1. 予約語は10個のみ
|
|||
|
|
- box, new, me, public, if, loop, break, return, import, from
|
|||
|
|
|
|||
|
|
2. コンストラクタ名は「birth」で統一
|
|||
|
|
- Everything is Box哲学を体現
|
|||
|
|
- packはビルトインBox継承時のみ(将来廃止検討)
|
|||
|
|
|
|||
|
|
3. 変数宣言は := 演算子を導入
|
|||
|
|
- x := 10 // 新規宣言
|
|||
|
|
- x = 20 // 既存変数への代入
|
|||
|
|
- let x = 10 // オプション(糖衣構文)
|
|||
|
|
|
|||
|
|
4. デリゲーションと親メソッド呼び出し
|
|||
|
|
- box Child from Parent { } // fromは残す
|
|||
|
|
- Parent::method() // 親メソッド呼び出し(推奨)
|
|||
|
|
- from method() // 単一親の場合の糖衣構文
|
|||
|
|
|
|||
|
|
5. デフォルト非公開
|
|||
|
|
- privateキーワード削除
|
|||
|
|
- publicを付けたものだけ公開
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
【具体例】
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
box Counter from BaseCounter {
|
|||
|
|
// フィールド(デフォルト非公開)
|
|||
|
|
count := 0
|
|||
|
|
|
|||
|
|
// 公開フィールド
|
|||
|
|
public name: str
|
|||
|
|
|
|||
|
|
// コンストラクタ(birthで統一)
|
|||
|
|
public birth(name) {
|
|||
|
|
me.name = name
|
|||
|
|
BaseCounter::birth() // 親のbirth呼び出し
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// メソッド(@overrideは属性)
|
|||
|
|
@override
|
|||
|
|
public increment() {
|
|||
|
|
me.count = me.count + 1
|
|||
|
|
BaseCounter::increment() // 親メソッド呼び出し
|
|||
|
|
return me.count
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 使用
|
|||
|
|
counter := new Counter("MyCounter")
|
|||
|
|
counter.increment()
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
【移行チェックリスト】
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
□ init → birth に変更
|
|||
|
|
□ private削除(デフォルト非公開)
|
|||
|
|
□ var x = → x := に変更
|
|||
|
|
□ from Parent.method() → Parent::method()
|
|||
|
|
□ override → @override
|
|||
|
|
□ and/or/not → &&/||/!
|
|||
|
|
□ try/catch → Result型 + ?演算子
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
【パーサー実装への影響】
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
1. 予約語リストを10個に削減
|
|||
|
|
2. := 演算子のサポート追加
|
|||
|
|
3. :: 演算子の拡張(親メソッド呼び出し対応)
|
|||
|
|
4. @属性のサポート追加
|
|||
|
|
5. privateキーワードの削除
|
|||
|
|
6. 文脈的from解釈の実装
|
|||
|
|
|
|||
|
|
================================================================================
|
|||
|
|
【次のアクション】
|
|||
|
|
================================================================================
|
|||
|
|
|
|||
|
|
1. LANGUAGE_REFERENCE_2025.mdの更新
|
|||
|
|
2. CLAUDE.mdの更新(birthを最優先に)
|
|||
|
|
3. パーサーの予約語リスト修正
|
|||
|
|
4. テストケースの更新
|
|||
|
|
5. 既存サンプルコードの移行
|
|||
|
|
|
|||
|
|
================================================================================
|