feat: 改行処理Phase 0 Quick Fix完了 - 複数行match式完全対応
- primary.rsに3箇所のskip_newlines()追加(COLON前後、COMMA判定前) - match_expr.rsのis_object_literal()を改行対応(lookahead改良) - セミコロンモード確認(NYASH_PARSER_ALLOW_SEMICOLON=1) - テストケース全て成功(NYASH_SYNTAX_SUGAR_LEVEL=full必須) - CLAUDE.md更新、改行処理戦略ドキュメント作成済み 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -330,9 +330,19 @@ impl NyashParser {
|
||||
if !matches!(self.current_token().token_type, TokenType::LBRACE) {
|
||||
return false;
|
||||
}
|
||||
match self.peek_token() {
|
||||
// Phase 0 Quick Fix: 改行をスキップして判定
|
||||
let mut lookahead_idx = 1;
|
||||
while matches!(self.peek_nth_token(lookahead_idx), TokenType::NEWLINE) {
|
||||
lookahead_idx += 1;
|
||||
}
|
||||
match self.peek_nth_token(lookahead_idx) {
|
||||
TokenType::IDENTIFIER(_) | TokenType::STRING(_) => {
|
||||
matches!(self.peek_nth_token(2), TokenType::COLON)
|
||||
// 次のトークンも改行をスキップして判定
|
||||
lookahead_idx += 1;
|
||||
while matches!(self.peek_nth_token(lookahead_idx), TokenType::NEWLINE) {
|
||||
lookahead_idx += 1;
|
||||
}
|
||||
matches!(self.peek_nth_token(lookahead_idx), TokenType::COLON)
|
||||
}
|
||||
_ => false
|
||||
}
|
||||
|
||||
@ -73,9 +73,12 @@ impl NyashParser {
|
||||
});
|
||||
}
|
||||
};
|
||||
self.skip_newlines(); // Phase 0 Quick Fix: COLON前に改行スキップ
|
||||
self.consume(TokenType::COLON)?;
|
||||
self.skip_newlines(); // Phase 0 Quick Fix: 値パース前に改行スキップ
|
||||
let value_expr = self.parse_expression()?;
|
||||
entries.push((key, value_expr));
|
||||
self.skip_newlines(); // Phase 0 Quick Fix: COMMA判定前に改行スキップ
|
||||
if self.match_token(&TokenType::COMMA) {
|
||||
self.advance();
|
||||
self.skip_newlines();
|
||||
|
||||
Reference in New Issue
Block a user