fix(lexer): Update DELITIMER_CHARS
This commit is contained in:
+32
-4
@@ -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),
|
||||
'!' => {
|
||||
|
||||
Reference in New Issue
Block a user