feat: add support for if/else statements

This commit is contained in:
2026-04-21 18:20:15 +02:00
parent eb3663dfbb
commit 0c288c2247
11 changed files with 247 additions and 17 deletions
+7 -1
View File
@@ -64,6 +64,8 @@ impl<'src> Lexer<'src> {
match &self.source[start..self.cursor] {
"fn" => TokenKind::Fn,
"if" => TokenKind::If,
"else" => TokenKind::Else,
"return" => TokenKind::Return,
"i8" => TokenKind::I8,
@@ -203,12 +205,16 @@ mod test {
#[test]
fn identifiers() {
assert_eq!(
tokenize("HELLO _hello _0@"),
tokenize("HELLO _hello _0@ fn if else return"),
vec![
Token::new(TokenKind::Identifier, "HELLO", Span::new(0, 5)),
Token::new(TokenKind::Identifier, "_hello", Span::new(6, 12)),
Token::new(TokenKind::Identifier, "_0", Span::new(13, 15)),
Token::new(TokenKind::Invalid, "@", Span::new(15, 16)),
Token::new(TokenKind::Fn, "fn", Span::new(17, 19)),
Token::new(TokenKind::If, "if", Span::new(20, 22)),
Token::new(TokenKind::Else, "else", Span::new(23, 27)),
Token::new(TokenKind::Return, "return", Span::new(28, 34)),
]
)
}