feat: 添加break和continue语句的支持,更新解析器、解释器和词法分析器以处理相关语法
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user