fix(ast): SelfInc use wrong way to recognize
This commit is contained in:
+18
-2
@@ -269,8 +269,24 @@ fn parse_puncuation(
|
||||
};
|
||||
let c = str_iter.peek().ok_or(LexParseError::NotMatched)?;
|
||||
let token_value = match c {
|
||||
'+' => TokenValue::Plus,
|
||||
'-' => TokenValue::Minus,
|
||||
'+' => {
|
||||
str_iter.advance(1);
|
||||
if let Some('+') = str_iter.peek() {
|
||||
TokenValue::PlusPlus
|
||||
} else {
|
||||
str_iter.back(1);
|
||||
TokenValue::Plus
|
||||
}
|
||||
},
|
||||
'-' => {
|
||||
str_iter.advance(1);
|
||||
if let Some('-') = str_iter.peek() {
|
||||
TokenValue::MinusMinus
|
||||
} else {
|
||||
str_iter.back(1);
|
||||
TokenValue::Minus
|
||||
}
|
||||
},
|
||||
'*' => TokenValue::Star,
|
||||
'/' => TokenValue::Slash,
|
||||
'%' => TokenValue::Percent,
|
||||
|
||||
@@ -17,6 +17,7 @@ pub enum TokenValue {
|
||||
TypeIdent(TypeIdent),
|
||||
|
||||
Plus, Minus, Star, Slash, Percent,
|
||||
PlusPlus, MinusMinus,
|
||||
Equal, DoubleEqual, Not, NotEqual, Less, LessEqual, Greater, GreaterEqual, And, Or,
|
||||
|
||||
LParen, RParen,
|
||||
@@ -53,6 +54,8 @@ impl std::fmt::Display for TokenValue {
|
||||
TokenValue::TypeIdent(t) => write!(f, "type {}", t.as_ref()),
|
||||
TokenValue::Plus => write!(f, "`+`"),
|
||||
TokenValue::Minus => write!(f, "`-`"),
|
||||
TokenValue::PlusPlus => write!(f, "`++`"),
|
||||
TokenValue::MinusMinus => write!(f, "`--`"),
|
||||
TokenValue::Star => write!(f, "`*`"),
|
||||
TokenValue::Slash => write!(f, "`/`"),
|
||||
TokenValue::Percent => write!(f, "`%`"),
|
||||
|
||||
Reference in New Issue
Block a user