feat: add support for booleans and comparision operators
This commit is contained in:
@@ -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)),
|
||||
]
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user