@@ -44,6 +44,8 @@ pub enum Token {
44
44
Comma ,
45
45
/// Whitespace (space, tab, etc)
46
46
Whitespace ( Whitespace ) ,
47
+ /// Double equals sign `==`
48
+ DoubleEq ,
47
49
/// Equality operator `=`
48
50
Eq ,
49
51
/// Not Equals operator `<>` (or `!=` in some dialects)
@@ -110,6 +112,7 @@ impl fmt::Display for Token {
110
112
Token :: HexStringLiteral ( ref s) => write ! ( f, "X'{}'" , s) ,
111
113
Token :: Comma => f. write_str ( "," ) ,
112
114
Token :: Whitespace ( ws) => write ! ( f, "{}" , ws) ,
115
+ Token :: DoubleEq => f. write_str ( "==" ) ,
113
116
Token :: Eq => f. write_str ( "=" ) ,
114
117
Token :: Neq => f. write_str ( "<>" ) ,
115
118
Token :: Lt => f. write_str ( "<" ) ,
@@ -395,7 +398,13 @@ impl<'a> Tokenizer<'a> {
395
398
_ => Ok ( Some ( Token :: Pipe ) ) ,
396
399
}
397
400
}
398
- '=' => self . consume_and_return ( chars, Token :: Eq ) ,
401
+ '=' => {
402
+ chars. next ( ) ;
403
+ match chars. peek ( ) {
404
+ Some ( '=' ) => self . consume_and_return ( chars, Token :: DoubleEq ) ,
405
+ _ => Ok ( Some ( Token :: Eq ) )
406
+ }
407
+ } ,
399
408
'.' => self . consume_and_return ( chars, Token :: Period ) ,
400
409
'!' => {
401
410
chars. next ( ) ; // consume
0 commit comments