@@ -235,25 +235,21 @@ where
235235 let ( term, sort) = self . parse_atom_term ( ) ?;
236236
237237 let mut fields = Vec :: new ( ) ;
238- loop {
239- if let Some ( Token {
240- kind : TokenKind :: Dot ,
241- ..
242- } ) = self . look_ahead_token ( 0 )
243- {
244- self . consume ( ) ;
245- match self . next_token ( "field" ) ? {
246- Token {
247- kind : TokenKind :: Literal ( lit) ,
248- ..
249- } if matches ! ( lit. kind, LitKind :: Integer ) => {
250- let idx = lit. symbol . as_str ( ) . parse ( ) . unwrap ( ) ;
251- fields. push ( idx) ;
252- }
253- t => return Err ( ParseAttrError :: unexpected_token ( "field" , t. clone ( ) ) ) ,
238+ while let Some ( Token {
239+ kind : TokenKind :: Dot ,
240+ ..
241+ } ) = self . look_ahead_token ( 0 )
242+ {
243+ self . consume ( ) ;
244+ match self . next_token ( "field" ) ? {
245+ Token {
246+ kind : TokenKind :: Literal ( lit) ,
247+ ..
248+ } if matches ! ( lit. kind, LitKind :: Integer ) => {
249+ let idx = lit. symbol . as_str ( ) . parse ( ) . unwrap ( ) ;
250+ fields. push ( idx) ;
254251 }
255- } else {
256- break ;
252+ t => return Err ( ParseAttrError :: unexpected_token ( "field" , t. clone ( ) ) ) ,
257253 }
258254 }
259255
@@ -428,36 +424,28 @@ where
428424
429425 fn parse_formula_and ( & mut self ) -> Result < chc:: Formula < T :: Output > > {
430426 let mut formula = self . parse_formula_atom ( ) ?;
431- loop {
432- match self . look_ahead_token ( 0 ) {
433- Some ( Token {
434- kind : TokenKind :: AndAnd ,
435- ..
436- } ) => {
437- self . consume ( ) ;
438- let next_formula = self . parse_formula_atom ( ) ?;
439- formula = formula. and ( next_formula) ;
440- }
441- _ => break ,
442- }
427+ while let Some ( Token {
428+ kind : TokenKind :: AndAnd ,
429+ ..
430+ } ) = self . look_ahead_token ( 0 )
431+ {
432+ self . consume ( ) ;
433+ let next_formula = self . parse_formula_atom ( ) ?;
434+ formula = formula. and ( next_formula) ;
443435 }
444436 Ok ( formula)
445437 }
446438
447439 fn parse_formula ( & mut self ) -> Result < chc:: Formula < T :: Output > > {
448440 let mut formula = self . parse_formula_and ( ) ?;
449- loop {
450- match self . look_ahead_token ( 0 ) {
451- Some ( Token {
452- kind : TokenKind :: OrOr ,
453- ..
454- } ) => {
455- self . consume ( ) ;
456- let next_formula = self . parse_formula_and ( ) ?;
457- formula = formula. or ( next_formula) ;
458- }
459- _ => break ,
460- }
441+ while let Some ( Token {
442+ kind : TokenKind :: OrOr ,
443+ ..
444+ } ) = self . look_ahead_token ( 0 )
445+ {
446+ self . consume ( ) ;
447+ let next_formula = self . parse_formula_and ( ) ?;
448+ formula = formula. or ( next_formula) ;
461449 }
462450 Ok ( formula)
463451 }
0 commit comments