@@ -101,7 +101,7 @@ impl Expr {
101101 pub fn from_str ( s : & str ) -> Result < Expr , String > {
102102 let mut p = Parser :: new ( s) ;
103103 let expr = p. parse_expr ( ) ?;
104- p. expect ( Token :: End ) ?;
104+ p. expect ( & Token :: End ) ?;
105105 Ok ( expr)
106106 }
107107}
@@ -151,10 +151,7 @@ impl<'a> Lexer<'a> {
151151
152152 fn next_token ( & mut self ) -> Result < Token , String > {
153153 self . skip_ws ( ) ;
154- let c = match self . peek_char ( ) {
155- Some ( c) => c,
156- None => return Ok ( Token :: End ) ,
157- } ;
154+ let Some ( c) = self . peek_char ( ) else { return Ok ( Token :: End ) } ;
158155
159156 // single-char tokens
160157 let tok = match c {
@@ -195,7 +192,7 @@ impl<'a> Lexer<'a> {
195192 if c. is_ascii_digit ( ) || c == '.' {
196193 return self . lex_number ( ) ;
197194 } else if c. is_ascii_alphabetic ( ) || c == '_' {
198- return self . lex_ident ( ) ;
195+ return Ok ( self . lex_ident ( ) ) ;
199196 }
200197 return Err ( format ! ( "Unexpected character: {c}" ) ) ;
201198 }
@@ -232,7 +229,7 @@ impl<'a> Lexer<'a> {
232229 Ok ( Token :: Number ( n) )
233230 }
234231
235- fn lex_ident ( & mut self ) -> Result < Token , String > {
232+ fn lex_ident ( & mut self ) -> Token {
236233 let start = self . i ;
237234 while let Some ( c) = self . peek_char ( ) {
238235 if c. is_ascii_alphanumeric ( ) || c == '_' {
@@ -241,7 +238,7 @@ impl<'a> Lexer<'a> {
241238 break ;
242239 }
243240 }
244- Ok ( Token :: Ident ( self . input [ start..self . i ] . to_string ( ) ) )
241+ Token :: Ident ( self . input [ start..self . i ] . to_string ( ) )
245242 }
246243}
247244
@@ -264,8 +261,8 @@ impl<'a> Parser<'a> {
264261 Ok ( ( ) )
265262 }
266263
267- fn expect ( & mut self , t : Token ) -> Result < ( ) , String > {
268- if self . cur == t {
264+ fn expect ( & mut self , t : & Token ) -> Result < ( ) , String > {
265+ if self . cur == * t {
269266 self . bump ( )
270267 } else {
271268 Err ( format ! ( "Expected {:?}, found {:?}" , t, self . cur) )
@@ -359,14 +356,14 @@ impl<'a> Parser<'a> {
359356 Token :: LParen => {
360357 self . bump ( ) ?;
361358 let e = self . parse_expr ( ) ?;
362- self . expect ( Token :: RParen ) ?;
359+ self . expect ( & Token :: RParen ) ?;
363360 Ok ( e)
364361 }
365362 Token :: Ident ( name) => {
366363 let name = name. clone ( ) ;
367364 self . bump ( ) ?;
368365 // function call must be ident '(' ...
369- self . expect ( Token :: LParen ) ?;
366+ self . expect ( & Token :: LParen ) ?;
370367 let mut args = Vec :: new ( ) ;
371368 if self . cur != Token :: RParen {
372369 loop {
@@ -378,7 +375,7 @@ impl<'a> Parser<'a> {
378375 break ;
379376 }
380377 }
381- self . expect ( Token :: RParen ) ?;
378+ self . expect ( & Token :: RParen ) ?;
382379 Ok ( Expr :: Func { name, args } )
383380 }
384381 _ => Err ( format ! ( "Unexpected token: {:?}" , self . cur) ) ,
0 commit comments