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 WHITESPACE_CHARS: &[char] = &[' ', '\t', '\n', '\r'];
const DELIMITER_CHARS: &[char] = &[ const DELIMITER_CHARS: &[char] = &[
'+', '-', '*', '/', '%', '=', '!', '<', '>', '(', ')', '[', ']', ',', ';', '{', '|', '&' '+', '-', '*', '/', '%', '=', '!', '<', '>', '(', ')', '[', ']', ',', ';', '{', '}', '|', '&'
]; ];
struct Cursor { struct Cursor {
chars: Vec<char>, chars: Vec<char>,
@@ -273,6 +273,8 @@ fn parse_puncuation(
str_iter.advance(1); str_iter.advance(1);
if let Some('+') = str_iter.peek() { if let Some('+') = str_iter.peek() {
TokenValue::PlusPlus TokenValue::PlusPlus
} else if let Some('=') = str_iter.peek() {
TokenValue::PlusEqual
} else { } else {
str_iter.back(1); str_iter.back(1);
TokenValue::Plus TokenValue::Plus
@@ -282,14 +284,40 @@ fn parse_puncuation(
str_iter.advance(1); str_iter.advance(1);
if let Some('-') = str_iter.peek() { if let Some('-') = str_iter.peek() {
TokenValue::MinusMinus TokenValue::MinusMinus
} else if let Some('=') = str_iter.peek() {
TokenValue::MinusEqual
} else { } else {
str_iter.back(1); str_iter.back(1);
TokenValue::Minus TokenValue::Minus
} }
}, },
'*' => TokenValue::Star, '*' => {
'/' => TokenValue::Slash, str_iter.advance(1);
'%' => TokenValue::Percent, 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), '=' => get_value_by_next_char(str_iter, TokenValue::Equal, TokenValue::DoubleEqual),
'!' => { '!' => {