@@ -219,6 +219,10 @@ where
219219 ) ,
220220 _ => unimplemented ! ( ) ,
221221 } ,
222+ TokenKind :: BinOp ( BinOpToken :: Minus ) => {
223+ let ( operand, _) = self . parse_atom_term ( ) ?;
224+ ( operand. neg ( ) , TermKind :: Other )
225+ }
222226 TokenKind :: BinOp ( BinOpToken :: Star ) => {
223227 let ( operand, kind) = self . parse_atom_term ( ) ?;
224228 match kind {
@@ -237,11 +241,12 @@ where
237241 }
238242 _ => {
239243 return Err ( ParseAttrError :: unexpected_token_tree (
240- "*, ^, (, identifier, or literal" ,
244+ "-, *, ^, (, identifier, or literal" ,
241245 tt,
242246 ) )
243247 }
244248 } ;
249+
245250 Ok ( ( term, kind) )
246251 }
247252
@@ -264,11 +269,36 @@ where
264269 let ( rhs, _) = self . parse_atom_term ( ) ?;
265270 lhs. mul ( rhs)
266271 }
272+ Some ( TokenKind :: EqEq ) => {
273+ self . consume ( ) ;
274+ let ( rhs, _) = self . parse_atom_term ( ) ?;
275+ lhs. eq ( rhs)
276+ }
277+ Some ( TokenKind :: Ne ) => {
278+ self . consume ( ) ;
279+ let ( rhs, _) = self . parse_atom_term ( ) ?;
280+ lhs. ne ( rhs)
281+ }
267282 Some ( TokenKind :: Ge ) => {
268283 self . consume ( ) ;
269284 let ( rhs, _) = self . parse_atom_term ( ) ?;
270285 lhs. ge ( rhs)
271286 }
287+ Some ( TokenKind :: Le ) => {
288+ self . consume ( ) ;
289+ let ( rhs, _) = self . parse_atom_term ( ) ?;
290+ lhs. le ( rhs)
291+ }
292+ Some ( TokenKind :: Gt ) => {
293+ self . consume ( ) ;
294+ let ( rhs, _) = self . parse_atom_term ( ) ?;
295+ lhs. gt ( rhs)
296+ }
297+ Some ( TokenKind :: Lt ) => {
298+ self . consume ( ) ;
299+ let ( rhs, _) = self . parse_atom_term ( ) ?;
300+ lhs. lt ( rhs)
301+ }
272302 _ => return Ok ( ( lhs, lhs_kind) ) ,
273303 } ;
274304
@@ -321,11 +351,17 @@ where
321351
322352 fn parse_formula_atom ( & mut self ) -> Result < chc:: Formula < T :: Output > > {
323353 match self . look_ahead_token_tree ( 0 ) . cloned ( ) {
324- Some ( TokenTree :: Token ( Token { kind : TokenKind :: Not , .. } , _) ) => {
354+ Some ( TokenTree :: Token (
355+ Token {
356+ kind : TokenKind :: Not ,
357+ ..
358+ } ,
359+ _,
360+ ) ) => {
325361 self . consume ( ) ;
326362 let atom = self . parse_atom ( ) ?;
327363 Ok ( chc:: Formula :: Atom ( atom) . not ( ) )
328- } ,
364+ }
329365 Some ( TokenTree :: Delimited ( _, _, Delimiter :: Parenthesis , s) ) => {
330366 self . consume ( ) ;
331367 let mut parser = Parser {
0 commit comments