diff options
Diffstat (limited to 'compiler/src/lex')
| -rw-r--r-- | compiler/src/lex/lexer.rs | 6 | ||||
| -rw-r--r-- | compiler/src/lex/tests.rs | 8 |
2 files changed, 1 insertions, 13 deletions
diff --git a/compiler/src/lex/lexer.rs b/compiler/src/lex/lexer.rs index 6efbca0..5e45b20 100644 --- a/compiler/src/lex/lexer.rs +++ b/compiler/src/lex/lexer.rs | |||
| @@ -131,12 +131,8 @@ impl<'a> Iterator for Lexer<'a> { | |||
| 131 | 131 | ||
| 132 | // Number | 132 | // Number |
| 133 | ch if ch.is_ascii_digit() | 133 | ch if ch.is_ascii_digit() |
| 134 | || ch == '.' && self.peek_nth(1).is_some_and(|ch| ch.is_ascii_digit()) | ||
| 135 | || matches!(ch, '+' | '-') | 134 | || matches!(ch, '+' | '-') |
| 136 | && self.peek_nth(1).is_some_and(|ch| ch.is_ascii_digit()) | 135 | && self.peek_nth(1).is_some_and(|ch| ch.is_ascii_digit()) => |
| 137 | || matches!(ch, '+' | '-') | ||
| 138 | && self.peek_nth(1).is_some_and(|ch| ch == '.') | ||
| 139 | && self.peek_nth(2).is_some_and(|ch| ch.is_ascii_digit()) => | ||
| 140 | { | 136 | { |
| 141 | Token::Number(self.next_atom()) | 137 | Token::Number(self.next_atom()) |
| 142 | } | 138 | } |
diff --git a/compiler/src/lex/tests.rs b/compiler/src/lex/tests.rs index d0ed658..0672dfa 100644 --- a/compiler/src/lex/tests.rs +++ b/compiler/src/lex/tests.rs | |||
| @@ -42,16 +42,8 @@ fn test_numbers() { | |||
| 42 | let cases = vec![ | 42 | let cases = vec![ |
| 43 | ("0", vec![Number("0")]), | 43 | ("0", vec![Number("0")]), |
| 44 | ("42", vec![Number("42")]), | 44 | ("42", vec![Number("42")]), |
| 45 | ("3.14", vec![Number("3.14")]), | ||
| 46 | ("-7", vec![Number("-7")]), | 45 | ("-7", vec![Number("-7")]), |
| 47 | ("+5", vec![Number("+5")]), | 46 | ("+5", vec![Number("+5")]), |
| 48 | ("-0.5", vec![Number("-0.5")]), | ||
| 49 | ("1e10", vec![Number("1e10")]), | ||
| 50 | ("1.5e-3", vec![Number("1.5e-3")]), | ||
| 51 | (".5", vec![Number(".5")]), | ||
| 52 | ("-.5", vec![Number("-.5")]), | ||
| 53 | ("+.5", vec![Number("+.5")]), | ||
| 54 | ("-.0", vec![Number("-.0")]), | ||
| 55 | ]; | 47 | ]; |
| 56 | for (code, tokens) in cases { | 48 | for (code, tokens) in cases { |
| 57 | assert_eq!(tokenize(code), tokens); | 49 | assert_eq!(tokenize(code), tokens); |
