♻️ skip_newlines()の段階的削除を継続 - match式内の6箇所を削除(41→35箇所、15%削減) - brace_depth > 0により自動改行処理が有効 - 削減計画ドキュメントを作成 📊 進捗状況 - Phase 1: 48→40箇所 ✅ - Phase 2-A: 40→35箇所 ✅ - 次: Phase 2-B(fields.rs等のBox宣言系) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
106 lines
3.1 KiB
Markdown
106 lines
3.1 KiB
Markdown
# skip_newlines() 段階的削除計画
|
||
|
||
## 📊 現状分析(2025-09-24)
|
||
|
||
### 削減実績
|
||
- **初期**: 48箇所
|
||
- **Phase 1完了**: 40箇所(17%削減)
|
||
- **削除済み**: primary.rsのオブジェクトリテラル内8箇所
|
||
|
||
### 残存箇所(41箇所)
|
||
```
|
||
common.rs: 1
|
||
statements.rs: 4
|
||
match_expr.rs: 6
|
||
primary.rs: 1
|
||
box_definition.rs: 3
|
||
static_box.rs: 2
|
||
header.rs: 2
|
||
interface.rs: 3
|
||
postfix.rs: 2
|
||
fields.rs: 9(最多)
|
||
properties.rs: 1
|
||
constructors.rs: 2
|
||
parser_enhanced.rs: 4(実験的)
|
||
nyash_parser_v2.rs: 1(実験的)
|
||
```
|
||
|
||
## 🎯 削除戦略
|
||
|
||
### Phase 2-A: 簡単な括弧内削除(即座に可能)
|
||
**対象**: 明らかに括弧内にあるskip_newlines()
|
||
- `match_expr.rs`: match式内(brace_depth > 0)の6箇所
|
||
- `primary.rs`: 残り1箇所(ブロック内)
|
||
- **予想削減**: 7箇所(41→34)
|
||
|
||
### Phase 2-B: Box宣言系(中難度)
|
||
**対象**: Box定義内の改行処理
|
||
- `fields.rs`: 9箇所(フィールド宣言)
|
||
- `box_definition.rs`: 3箇所
|
||
- `static_box.rs`: 2箇所
|
||
- **課題**: フィールド区切りの判定が必要
|
||
- **予想削減**: 14箇所(34→20)
|
||
|
||
### Phase 2-C: 文処理系(高難度)
|
||
**対象**: 文の区切り判定に関わる部分
|
||
- `statements.rs`: 4箇所
|
||
- `header.rs`: 2箇所
|
||
- `interface.rs`: 3箇所
|
||
- **課題**: 文区切りと行継続の判定が複雑
|
||
- **予想削減**: 9箇所(20→11)
|
||
|
||
### Phase 2-D: メンバー宣言系(最高難度)
|
||
**対象**: Boxメンバーの宣言
|
||
- `constructors.rs`: 2箇所
|
||
- `properties.rs`: 1箇所
|
||
- `postfix.rs`: 2箇所
|
||
- **課題**: 複雑な構文の境界判定
|
||
- **予想削減**: 5箇所(11→6)
|
||
|
||
### Phase 2-E: 共通関数(最終段階)
|
||
**対象**: ParserUtilsの共通関数
|
||
- `common.rs`: 1箇所(skip_newlines_internal)
|
||
- **課題**: 全削除後に関数自体を削除
|
||
- **予想削減**: 1箇所(6→5)
|
||
|
||
### 実験的ファイル(除外)
|
||
- `parser_enhanced.rs`: 4箇所
|
||
- `nyash_parser_v2.rs`: 1箇所
|
||
これらは実験的実装のため削除対象外
|
||
|
||
## 📈 削減ロードマップ
|
||
|
||
```
|
||
Phase 1: 48 → 40 (8削除) ✅ 完了
|
||
Phase 2-A: 40 → 33 (7削除) 🚀 次のタスク
|
||
Phase 2-B: 33 → 19 (14削除)
|
||
Phase 2-C: 19 → 10 (9削除)
|
||
Phase 2-D: 10 → 5 (5削除)
|
||
Phase 2-E: 5 → 0 (5削除)※実験ファイル除く
|
||
```
|
||
|
||
## 🔧 実装方針
|
||
|
||
### 削除前のチェックリスト
|
||
1. ✅ 深度追跡が有効な箇所か確認
|
||
2. ✅ テストケースの準備
|
||
3. ✅ 削除後の動作確認
|
||
4. ✅ コミット単位を小さく保つ
|
||
|
||
### 削除時の置き換えルール
|
||
- **括弧内**: 単純削除(深度追跡で自動処理)
|
||
- **演算子後**: 単純削除(行継続判定で自動処理)
|
||
- **文区切り**: TokenCursorモード切り替えで対応
|
||
- **その他**: 個別判断
|
||
|
||
## 🎯 最終目標
|
||
|
||
1. **実用コードからskip_newlines()完全排除**
|
||
2. **TokenCursorによる統一的な改行処理**
|
||
3. **コード品質とメンテナンス性の向上**
|
||
|
||
## 📝 次のアクション
|
||
|
||
1. Phase 2-A: match_expr.rsの6箇所削除
|
||
2. テスト実行と動作確認
|
||
3. 段階的にPhase 2-B以降を実施 |