module UU.Scanner.GenTokenOrd() where

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

instance (Eq key, Eq tp) => Eq (GenToken key tp val) where
   Reserved key
x    Pos
_ == :: GenToken key tp val -> GenToken key tp val -> Bool
== Reserved key
y    Pos
_ = key
x key -> key -> Bool
forall a. Eq a => a -> a -> Bool
== key
y
   ValToken tp
tx val
_ Pos
_ == ValToken tp
ty val
_ Pos
_ = tp
tx tp -> tp -> Bool
forall a. Eq a => a -> a -> Bool
== tp
ty
   GenToken key tp val
_               == GenToken key tp val
_               = 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 key
x    Pos
_) (Reserved key
y    Pos
_) = key -> key -> Ordering
forall a. Ord a => a -> a -> Ordering
compare key
x key
y
  compare (Reserved key
_    Pos
_) GenToken key tp val
_                 = Ordering
LT
  compare (ValToken tp
tx val
_ Pos
_) (ValToken tp
ty val
_ Pos
_) = tp -> tp -> Ordering
forall a. Ord a => a -> a -> Ordering
compare tp
tx tp
ty
  compare GenToken key tp val
_              GenToken key tp val
_                    = Ordering
GT