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