    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 :: forall s a. (Eq s, Show s, Symbol s) => Parser s a -> [s] -> IO a
    parseIO = (Message s (Maybe s) -> String)
    -> AnaParser [s] Pair s (Maybe s) a -> [s] -> IO a
    forall s inp p a.
    (Symbol s, InputState inp s p) =>
    (Message s p -> String) -> AnaParser inp Pair s p a -> inp -> IO a
    parseIOMessage Message s (Maybe s) -> String
    forall {sym} {a}.
    (Eq sym, Show a, Show sym) =>
    Message sym (Maybe a) -> String
    showMessage
      where showMessage :: Message sym (Maybe a) -> String
    showMessage (Msg Expecting sym
    expecting Maybe a
    position Action sym
    action)
              =  let pos :: String
    pos = case Maybe a
    position of
                               Maybe a
    Nothing -> String
    "at end of file"
                               Just a
    s  -> case Action sym
    action of
                                    Insert sym
    _ -> String
    "before " String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ a -> String
    forall a. Show a => a -> String
    show a
    s
                                    Delete sym
    t -> String
    "at " String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ sym -> String
    forall a. Show a => a -> String
    show sym
    t
                 in String
    "\n?? Error      : " String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ String
    pos String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++
                    String
    "\n?? Expecting  : " String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ Expecting sym -> String
    forall a. Show a => a -> String
    show Expecting sym
    expecting String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++
                    String
    "\n?? Repaired by: " String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ Action sym -> String
    forall a. Show a => a -> String
    show Action sym
    action String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ String
    "\n"