1
0
Fork 0

Add support for modulus operator

This commit is contained in:
Vili Sinervä 2025-02-03 16:33:02 +02:00
parent 71ca729682
commit cd93c1a3bd
No known key found for this signature in database
GPG key ID: DF8FEAF54EFAC996

View file

@ -9,7 +9,7 @@ pub fn tokenize(code: &str) -> Vec<Token> {
(TokenType::Whitespace, Regex::new(r"^[\s\t\n]+").unwrap()),
(
TokenType::Operator,
Regex::new(r"^(==|!=|<=|>=|=|<|>|\+|-|\*|/)").unwrap(),
Regex::new(r"^(==|!=|<=|>=|=|<|>|\+|-|\*|/|\%)").unwrap(),
),
(TokenType::Punctuation, Regex::new(r"^[\(\){},;]").unwrap()),
(TokenType::Integer, Regex::new(r"^[0-9]+").unwrap()),
@ -147,7 +147,7 @@ mod tests {
#[test]
fn test_tokenize_operators_all() {
let loc = CodeLocation::new(usize::MAX, usize::MAX);
let result = tokenize("var 1 + - * 1/2 = == != < <= > >= 2");
let result = tokenize("var 1 + - * 1/2 = == != < <= > >= 2 %");
use TokenType::*;
assert_eq!(
@ -169,6 +169,7 @@ mod tests {
Token::new(">", Operator, loc),
Token::new(">=", Operator, loc),
Token::new("2", Integer, loc),
Token::new("%", Operator, loc),
)
);
}
@ -201,6 +202,6 @@ mod tests {
#[test]
#[should_panic]
fn test_tokenize_wrong_token() {
tokenize("if 3\n while %");
tokenize("if 3\n while @");
}
}