sattok mooier
[cc1516.git] / src / parse.icl
index f1c7620..e60ad17 100644 (file)
@@ -172,8 +172,14 @@ trans2 t f = satTok t >>= \(_, r).pure (f r)
 trans1 :: TokenValue a -> Parser Token a
 trans1 t r = trans2 t $ const r
 
+derive gEq TokenValue
 satTok :: TokenValue -> Parser Token Token
-satTok t = satisfy ((===) t)
+satTok t = satisfy $ eq t
+       where
+               eq (IdentToken _) (_, IdentToken _) = True
+               eq (NumberToken _) (_, NumberToken _) = True
+               eq (CharToken _) (_, CharToken _) = True
+               eq x (_, y) = gEq {|*|} x y
 
 parseSepList :: TokenValue (Parser Token a) -> Parser Token [a]
 parseSepList sep p =