module UU.Scanner.GenTokenOrd() where

import UU.Scanner.GenToken(GenToken(..))

instance (Eq key, Eq tp) => Eq (GenToken key tp val) where
   Reserved x :: key
x    _ == :: GenToken key tp val -> GenToken key tp val -> Bool
== Reserved y :: key
y    _ = key
x key -> key -> Bool
forall a. Eq a => a -> a -> Bool
== key
y
   ValToken tx :: tp
tx _ _ == ValToken ty :: tp
ty _ _ = tp
tx tp -> tp -> Bool
forall a. Eq a => a -> a -> Bool
== tp
ty
   _               == _               = Bool
False
   
instance (Ord key, Ord tp) => Ord (GenToken key tp val) where
  compare :: GenToken key tp val -> GenToken key tp val -> Ordering
compare (Reserved x :: key
x    _) (Reserved y :: key
y    _) = key -> key -> Ordering
forall a. Ord a => a -> a -> Ordering
compare key
x key
y
  compare (Reserved _    _) _                 = Ordering
LT
  compare (ValToken tx :: tp
tx _ _) (ValToken ty :: tp
ty _ _) = tp -> tp -> Ordering
forall a. Ord a => a -> a -> Ordering
compare tp
tx tp
ty
  compare _              _                    = Ordering
GT