fix(lexer): Update DELITIMER_CHARS

This commit is contained in:
2026-06-13 09:11:17 +08:00
parent 7bcf77f1c1
commit 6b13991e39
+32 -4
View File
@@ -16,7 +16,7 @@ pub struct Lexer {
const WHITESPACE_CHARS: &[char] = &[' ', '\t', '\n', '\r'];
const DELIMITER_CHARS: &[char] = &[
'+', '-', '*', '/', '%', '=', '!', '<', '>', '(', ')', '[', ']', ',', ';', '{', '|', '&'
'+', '-', '*', '/', '%', '=', '!', '<', '>', '(', ')', '[', ']', ',', ';', '{', '}', '|', '&'
];
struct Cursor {
chars: Vec<char>,
@@ -273,6 +273,8 @@ fn parse_puncuation(
str_iter.advance(1);
if let Some('+') = str_iter.peek() {
TokenValue::PlusPlus
} else if let Some('=') = str_iter.peek() {
TokenValue::PlusEqual
} else {
str_iter.back(1);
TokenValue::Plus
@@ -282,14 +284,40 @@ fn parse_puncuation(
str_iter.advance(1);
if let Some('-') = str_iter.peek() {
TokenValue::MinusMinus
} else if let Some('=') = str_iter.peek() {
TokenValue::MinusEqual
} else {
str_iter.back(1);
TokenValue::Minus
}
},
'*' => TokenValue::Star,
'/' => TokenValue::Slash,
'%' => TokenValue::Percent,
'*' => {
str_iter.advance(1);
if let Some('=') = str_iter.peek() {
TokenValue::StarEqual
} else {
str_iter.back(1);
TokenValue::Star
}
},
'/' => {
str_iter.advance(1);
if let Some('=') = str_iter.peek() {
TokenValue::SlashEqual
} else {
str_iter.back(1);
TokenValue::Slash
}
},
'%' => {
str_iter.advance(1);
if let Some('=') = str_iter.peek() {
TokenValue::PercentEqual
} else {
str_iter.back(1);
TokenValue::Percent
}
},
'=' => get_value_by_next_char(str_iter, TokenValue::Equal, TokenValue::DoubleEqual),
'!' => {