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 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),
|
||||||
'!' => {
|
'!' => {
|
||||||
|
|||||||
Reference in New Issue
Block a user