    module UU.Parsing( module UU.Parsing.Derived
                     , module UU.Parsing.Interface
                     , parseIO
                     ) where

    import UU.Parsing.Derived
    import UU.Parsing.Interface

    parseIO :: (Eq s, Show s, Symbol s) => Parser s a -> [s] -> IO a
    parseIO = parseIOMessage showMessage
      where showMessage (Msg expecting position action)
              =  let pos = case position of
                               Nothing -> "at end of file"
                               Just s  -> case action of
                                    Insert _ -> "before " ++ show s
                                    Delete t -> "at " ++ show t
                 in "\n?? Error      : " ++ pos ++
                    "\n?? Expecting  : " ++ show expecting ++
                    "\n?? Repaired by: " ++ show action ++ "\n"