double dot in for ranges

This commit is contained in:
2025-06-13 16:59:22 +02:00
parent a93274d8ac
commit 7425ab256b
19 changed files with 43 additions and 33 deletions

View File

@@ -18,6 +18,7 @@ pub enum TokenType {
And,
Or,
Pipe,
DoubleDot,
Equal,
DoubleEqual,
@@ -147,6 +148,13 @@ impl Tokenizer {
'%' => self.add_token(TokenType::Mod),
'^' => self.add_token(TokenType::Xor),
':' => self.add_token(TokenType::Colon),
'.' => {
if self.match_char('.') {
self.add_token(TokenType::DoubleDot)
} else {
return error!(self.loc, "expected '.' after '.'");
}
}
'/' => {
if self.match_char('/') {
while !self.eof() && self.peek() != '\n' {
@@ -287,7 +295,10 @@ impl Tokenizer {
self.advance();
}
if self.peek() == '.' {
if self.peek() == '.'
&& (self.current + 1 >= self.source.len())
&& self.source[self.current + 1].is_ascii_digit()
{
self.advance();
while self.peek().is_ascii_digit() {
self.advance();