Add support for modulus operator
This commit is contained in:
parent
71ca729682
commit
cd93c1a3bd
1 changed files with 4 additions and 3 deletions
|
@ -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 @");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue