feat: 添加break和continue语句的支持,更新解析器、解释器和词法分析器以处理相关语法

This commit is contained in:
0264408
2026-06-10 17:37:12 +08:00
parent dd3f18da6f
commit ae3060708d
7 changed files with 109 additions and 21 deletions
+14
View File
@@ -39,6 +39,10 @@ impl Parser {
self.while_statement()
} else if self.match_kind(&[TokenKind::For]) {
self.for_statement()
} else if self.match_kind(&[TokenKind::Break]) {
self.break_statement()
} else if self.match_kind(&[TokenKind::Continue]) {
self.continue_statement()
} else if self.match_kind(&[TokenKind::Return]) {
self.return_statement()
} else if self.match_kind(&[TokenKind::LeftBrace]) {
@@ -153,6 +157,16 @@ impl Parser {
}
}
fn break_statement(&mut self) -> Stmt {
self.match_kind(&[TokenKind::Semicolon]); // 分号可选
Stmt::Break
}
fn continue_statement(&mut self) -> Stmt {
self.match_kind(&[TokenKind::Semicolon]); // 分号可选
Stmt::Continue
}
fn return_statement(&mut self) -> Stmt {
let value = if !self.check(&TokenKind::Semicolon) && !self.check(&TokenKind::RightBrace) {
Some(self.expression())