Skip to content

Commit 2185321

Browse files
committed
refactor for_loop completed
1 parent 3803ed8 commit 2185321

File tree

2 files changed

+7
-26
lines changed

2 files changed

+7
-26
lines changed

examples/main.cyr

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
i < 0
1+
for #i = 0; i < 10; i++ {
2+
3+
}

parser/src/statements.rs

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -585,34 +585,13 @@ impl<'a> Parser<'a> {
585585
}
586586

587587
let condition = self.parse_expression(Precedence::Lowest)?.0;
588-
if (self.current_token_is(TokenKind::Semicolon) || self.peek_token_is(TokenKind::Semicolon)) != true {
589-
return Err(CompileTimeError {
590-
location: self.current_location(),
591-
etype: ParserErrorType::MissingSemicolon,
592-
file_name: Some(self.lexer.file_name.clone()),
593-
code_raw: Some(self.lexer.select(start..self.current_token.span.end)),
594-
verbose: None,
595-
caret: true,
596-
});
597-
}
598-
self.next_token(); // consume latest token
599-
600-
if self.current_token_is(TokenKind::Semicolon) {
601-
self.next_token();
602-
}
588+
self.expect_current(TokenKind::Semicolon)?;
603589

604590
let mut increment: Option<Expression> = None;
591+
592+
605593
if !self.current_token_is(TokenKind::LeftBrace) {
606-
match self.parse_expression(Precedence::Lowest) {
607-
Ok(result) => {
608-
increment = Some(result.0);
609-
}
610-
Err(e) => {
611-
return Err(e);
612-
}
613-
}
614-
615-
self.next_token(); // consume increment token
594+
increment = Some(self.parse_expression(Precedence::Lowest)?.0);
616595
}
617596

618597
let body = self.parse_for_loop_body(start)?;

0 commit comments

Comments
 (0)