runParser :: Parser a -> B.ByteString
          -> Either ParseError (a, B.ByteString)
runParser p xs =
  case S.runState (E.runExceptT . runP $ p) xs of
    (Left err, _) ->
      Left err

    (Right x, ys) ->
      Right (x, ys)
runParser :: Parser a -> B.ByteString
          -> Either ParseError (a, B.ByteString)
runParser p xs =
  case S.runState (E.runExceptT . runP $ p) xs of
    (Left err, _) ->
      Left err

    (Right x, ys) ->
      Right (x, ys)
runParser p xs =
  case S.runState (E.runExceptT . runP $ p) xs of
    (Left err, _) ->
      Left err

    (Right x, ys) ->
      Right (x, ys)