@@ -59,6 +59,10 @@ pub enum Token<'src> {
5959 Slash ,
6060 /// `%`
6161 Percent ,
62+ /// `&&`
63+ AmpAmp ,
64+ /// `||`
65+ PipePipe ,
6266 /// `&`
6367 Ampersand ,
6468 /// `|`
@@ -130,6 +134,8 @@ impl<'src> fmt::Display for Token<'src> {
130134 Token :: Star => write ! ( f, "*" ) ,
131135 Token :: Slash => write ! ( f, "/" ) ,
132136 Token :: Percent => write ! ( f, "%" ) ,
137+ Token :: AmpAmp => write ! ( f, "&&" ) ,
138+ Token :: PipePipe => write ! ( f, "||" ) ,
133139 Token :: Ampersand => write ! ( f, "&" ) ,
134140 Token :: Pipe => write ! ( f, "|" ) ,
135141 Token :: Caret => write ! ( f, "^" ) ,
@@ -212,32 +218,38 @@ pub fn lexer<'src>(
212218 . map ( Token :: Param ) ;
213219
214220 let op = choice ( (
215- just ( "->" ) . to ( Token :: Arrow ) ,
216- just ( "=>" ) . to ( Token :: FatArrow ) ,
217- just ( "==" ) . to ( Token :: EqEq ) ,
218- just ( "!=" ) . to ( Token :: BangEq ) ,
219- just ( "=" ) . to ( Token :: Eq ) ,
220- just ( ":" ) . to ( Token :: Colon ) ,
221- just ( ";" ) . to ( Token :: Semi ) ,
222- just ( "," ) . to ( Token :: Comma ) ,
223- just ( "(" ) . to ( Token :: LParen ) ,
224- just ( ")" ) . to ( Token :: RParen ) ,
225- just ( "[" ) . to ( Token :: LBracket ) ,
226- just ( "]" ) . to ( Token :: RBracket ) ,
227- just ( "{" ) . to ( Token :: LBrace ) ,
228- just ( "}" ) . to ( Token :: RBrace ) ,
229- just ( "<=" ) . to ( Token :: LtEq ) ,
230- just ( "<" ) . to ( Token :: LAngle ) ,
231- just ( ">=" ) . to ( Token :: GtEq ) ,
232- just ( ">" ) . to ( Token :: RAngle ) ,
233- just ( "+" ) . to ( Token :: Plus ) ,
234- just ( "-" ) . to ( Token :: Minus ) ,
235- just ( "*" ) . to ( Token :: Star ) ,
236- just ( "/" ) . to ( Token :: Slash ) ,
237- just ( "%" ) . to ( Token :: Percent ) ,
238- just ( "&" ) . to ( Token :: Ampersand ) ,
239- just ( "|" ) . to ( Token :: Pipe ) ,
240- just ( "^" ) . to ( Token :: Caret ) ,
221+ choice ( (
222+ just ( "->" ) . to ( Token :: Arrow ) ,
223+ just ( "=>" ) . to ( Token :: FatArrow ) ,
224+ just ( "==" ) . to ( Token :: EqEq ) ,
225+ just ( "!=" ) . to ( Token :: BangEq ) ,
226+ just ( "=" ) . to ( Token :: Eq ) ,
227+ just ( ":" ) . to ( Token :: Colon ) ,
228+ just ( ";" ) . to ( Token :: Semi ) ,
229+ just ( "," ) . to ( Token :: Comma ) ,
230+ just ( "(" ) . to ( Token :: LParen ) ,
231+ just ( ")" ) . to ( Token :: RParen ) ,
232+ just ( "[" ) . to ( Token :: LBracket ) ,
233+ just ( "]" ) . to ( Token :: RBracket ) ,
234+ just ( "{" ) . to ( Token :: LBrace ) ,
235+ just ( "}" ) . to ( Token :: RBrace ) ,
236+ ) ) ,
237+ choice ( (
238+ just ( "<=" ) . to ( Token :: LtEq ) ,
239+ just ( "<" ) . to ( Token :: LAngle ) ,
240+ just ( ">=" ) . to ( Token :: GtEq ) ,
241+ just ( ">" ) . to ( Token :: RAngle ) ,
242+ just ( "+" ) . to ( Token :: Plus ) ,
243+ just ( "-" ) . to ( Token :: Minus ) ,
244+ just ( "*" ) . to ( Token :: Star ) ,
245+ just ( "/" ) . to ( Token :: Slash ) ,
246+ just ( "%" ) . to ( Token :: Percent ) ,
247+ just ( "&&" ) . to ( Token :: AmpAmp ) ,
248+ just ( "||" ) . to ( Token :: PipePipe ) ,
249+ just ( "&" ) . to ( Token :: Ampersand ) ,
250+ just ( "|" ) . to ( Token :: Pipe ) ,
251+ just ( "^" ) . to ( Token :: Caret ) ,
252+ ) ) ,
241253 ) ) ;
242254
243255 let comment = just ( "//" )
@@ -353,6 +365,11 @@ mod tests {
353365 Token :: Star => "Star" ,
354366 Token :: Slash => "Slash" ,
355367 Token :: Percent => "Percent" ,
368+ Token :: AmpAmp => "AmpAmp" ,
369+ Token :: PipePipe => "PipePipe" ,
370+ Token :: Ampersand => "Ampersand" ,
371+ Token :: Pipe => "Pipe" ,
372+ Token :: Caret => "Caret" ,
356373 Token :: EqEq => "EqEq" ,
357374 Token :: BangEq => "BangEq" ,
358375 Token :: LtEq => "LtEq" ,
0 commit comments