feat: 改行処理Phase 1 Smart advance完全実装 - 深度追跡でskip_newlines削減開始
✨ Smart advance()による自動改行処理を実装 - depth_tracking.rsで括弧深度(paren/brace/bracket)を自動管理 - 括弧内では改行を自動スキップ、演算子後の行継続も自動判定 - デフォルトで有効化(NYASH_SMART_ADVANCE=0で無効化可能) ♻️ skip_newlines()の段階的削除を開始 - primary.rsのオブジェクトリテラル内8箇所を削除(48→40箇所、17%削減) - 深度追跡により手動skip_newlines()が不要に 🧪 テスト結果 - 文区切り、演算子行継続、括弧内改行、次行演算子すべて成功 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -47,9 +47,9 @@ impl NyashParser {
|
||||
let ident_key_on = std::env::var("NYASH_ENABLE_MAP_IDENT_KEY").ok().as_deref()
|
||||
== Some("1")
|
||||
|| sugar_level.as_deref() != Some("basic"); // basic以外は全て許可(デフォルト含む)
|
||||
self.skip_newlines();
|
||||
// skip_newlines削除: brace_depth > 0なので自動スキップされる
|
||||
while !self.match_token(&TokenType::RBRACE) && !self.is_at_end() {
|
||||
self.skip_newlines();
|
||||
// skip_newlines削除: brace_depth > 0なので自動スキップされる
|
||||
let key = match &self.current_token().token_type {
|
||||
TokenType::STRING(s) => {
|
||||
let v = s.clone();
|
||||
@ -74,18 +74,18 @@ impl NyashParser {
|
||||
});
|
||||
}
|
||||
};
|
||||
self.skip_newlines(); // Phase 0 Quick Fix: COLON前に改行スキップ
|
||||
// skip_newlines削除: brace_depth > 0なので自動スキップされる
|
||||
self.consume(TokenType::COLON)?;
|
||||
self.skip_newlines(); // Phase 0 Quick Fix: 値パース前に改行スキップ
|
||||
// skip_newlines削除: brace_depth > 0なので自動スキップされる
|
||||
let value_expr = self.parse_expression()?;
|
||||
entries.push((key, value_expr));
|
||||
self.skip_newlines(); // Phase 0 Quick Fix: COMMA判定前に改行スキップ
|
||||
// skip_newlines削除: brace_depth > 0なので自動スキップされる
|
||||
if self.match_token(&TokenType::COMMA) {
|
||||
self.advance();
|
||||
self.skip_newlines();
|
||||
// skip_newlines削除: brace_depth > 0なので自動スキップされる
|
||||
}
|
||||
}
|
||||
self.skip_newlines();
|
||||
// skip_newlines削除: brace_depth > 0なので自動スキップされる
|
||||
self.consume(TokenType::RBRACE)?;
|
||||
Ok(ASTNode::MapLiteral {
|
||||
entries,
|
||||
|
||||
Reference in New Issue
Block a user