feat: add support for booleans and comparision operators

This commit is contained in:
2026-04-21 10:56:42 +02:00
parent bad6b9e116
commit eb3663dfbb
11 changed files with 293 additions and 3 deletions
+22
View File
@@ -142,6 +142,11 @@ impl<'src> Lexer<'src> {
'/' => token!(TokenKind::Slash),
'%' => token!(TokenKind::Percent),
'!' => token!(TokenKind::Bang, '=' => TokenKind::Unequal),
'=' => token!(TokenKind::Assign, '=' => TokenKind::Equal),
'<' => token!(TokenKind::LessThan, '=' => TokenKind::LessEqual),
'>' => token!(TokenKind::GreaterThan, '=' => TokenKind::GreaterEqual),
'.' => token!(TokenKind::Dot),
',' => token!(TokenKind::Comma),
':' => token!(TokenKind::Colon),
@@ -283,4 +288,21 @@ mod test {
]
)
}
#[test]
fn comparison_and_logical() {
assert_eq!(
tokenize("== != < <= > >= ! ="),
vec![
Token::new(TokenKind::Equal, "==", Span::new(0, 2)),
Token::new(TokenKind::Unequal, "!=", Span::new(3, 5)),
Token::new(TokenKind::LessThan, "<", Span::new(6, 7)),
Token::new(TokenKind::LessEqual, "<=", Span::new(8, 10)),
Token::new(TokenKind::GreaterThan, ">", Span::new(11, 12)),
Token::new(TokenKind::GreaterEqual, ">=", Span::new(13, 15)),
Token::new(TokenKind::Bang, "!", Span::new(16, 17)),
Token::new(TokenKind::Assign, "=", Span::new(18, 19)),
]
)
}
}