Add logical and comparison expressions
This commit is contained in:
@@ -34,8 +34,13 @@ pub enum TokenKind {
|
||||
Dot,
|
||||
Colon,
|
||||
Equal,
|
||||
EqualEqual,
|
||||
Bang,
|
||||
BangEqual,
|
||||
Arrow,
|
||||
Amp,
|
||||
AmpAmp,
|
||||
PipePipe,
|
||||
Plus,
|
||||
Minus,
|
||||
Star,
|
||||
@@ -142,7 +147,22 @@ impl<'a> Lexer<'a> {
|
||||
}
|
||||
b'&' => {
|
||||
self.pos += 1;
|
||||
TokenKind::Amp
|
||||
if self.consume(b'&') {
|
||||
TokenKind::AmpAmp
|
||||
} else {
|
||||
TokenKind::Amp
|
||||
}
|
||||
}
|
||||
b'|' => {
|
||||
self.pos += 1;
|
||||
if self.consume(b'|') {
|
||||
TokenKind::PipePipe
|
||||
} else {
|
||||
return Err(Diagnostic::syntax(
|
||||
self.span(start, self.pos),
|
||||
"expected '|' after '|'",
|
||||
));
|
||||
}
|
||||
}
|
||||
b'+' => {
|
||||
self.pos += 1;
|
||||
@@ -160,10 +180,20 @@ impl<'a> Lexer<'a> {
|
||||
self.pos += 1;
|
||||
if self.consume(b'>') {
|
||||
TokenKind::Arrow
|
||||
} else if self.consume(b'=') {
|
||||
TokenKind::EqualEqual
|
||||
} else {
|
||||
TokenKind::Equal
|
||||
}
|
||||
}
|
||||
b'!' => {
|
||||
self.pos += 1;
|
||||
if self.consume(b'=') {
|
||||
TokenKind::BangEqual
|
||||
} else {
|
||||
TokenKind::Bang
|
||||
}
|
||||
}
|
||||
b'>' => {
|
||||
self.pos += 1;
|
||||
if self.consume(b'=') {
|
||||
|
||||
Reference in New Issue
Block a user