packages feed

uhc-util 0.1.3.2 → 0.1.3.5

raw patch · 2 files changed

+31/−5 lines, 2 filesdep ~fglPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

Dependency ranges changed: fgl

API changes (from Hackage documentation)

+ UHC.Util.ParseUtils: fromMessage :: (Show s, Eq s) => (p -> String -> String -> x) -> Message s p -> x
+ UHC.Util.ParseUtils: parseToResWith :: (Symbol s, Show s, Eq s, InputState inp s pos) => (pos -> String -> String -> e) -> AnaParser inp Pair s pos a -> inp -> (a, [e])
+ UHC.Util.ParseUtils: position :: GenToken k t v -> Pos

Files

src/UHC/Util/ParseUtils.hs view
@@ -1,19 +1,29 @@ {-# LANGUAGE RankNTypes, FlexibleContexts #-}  module UHC.Util.ParseUtils-  ( PlainParser+  ( -- * Specific parser types+    PlainParser   , LayoutParser, LayoutParser2   +  -- * Top level wrappers/invocations   , parsePlain   , parseOffsideToResMsgs   , parseToResMsgs+  , parseToResWith      , parseOffsideToResMsgsStopAtErr   +  -- * Additional parser combinators   , pAnyFromMap, pAnyKey   , pMaybe, pMb      , pDo+  +  -- * Re-exports+  , position+  +  -- * Dealing with Message+  , fromMessage   )   where @@ -23,6 +33,7 @@ import UU.Parsing.Machine import UU.Parsing.Offside import UU.Scanner.Position( Position(..) )+import UU.Scanner.GenToken  ------------------------------------------------------------------------- -- Type(s) of parsers@@ -64,10 +75,17 @@ parsePlain p inp   = valFromPair (parse p inp) -parseToResMsgs :: (Symbol s,InputState inp s pos) => AnaParser inp Pair s pos a -> inp -> (a,[Message s pos])+-- | Invoke parser, yielding result + errors+parseToResMsgs :: (Symbol s, InputState inp s pos) => AnaParser inp Pair s pos a -> inp -> (a,[Message s pos]) parseToResMsgs p inp   = toResMsgs (parse p inp) +-- | Invoke parser, yielding result + errors processed with a function+parseToResWith :: (Symbol s, Show s, Eq s, InputState inp s pos) => (pos -> String -> String -> e) -> AnaParser inp Pair s pos a -> inp -> (a,[e])+parseToResWith f p inp+  = (r, map (fromMessage f) e)+  where (r,e) = toResMsgs (parse p inp)+ parseOffsideToResMsgs   :: (Symbol s, InputState i s p, Position p)        => OffsideParser i Pair s p a -> OffsideInput i s p -> (a,[Message (OffsideSymbol s) p])@@ -169,4 +187,12 @@ -- given (non-empty) key->value map, return parser for all keys returning corresponding value pAnyFromMap :: (IsParser p s) => (k -> p a1) -> Map.Map k v -> p v pAnyFromMap pKey m = foldr1 (<|>) [ v <$ pKey k | (k,v) <- Map.toList m ]++-------------------------------------------------------------------------+-- Dealing with error Message+-------------------------------------------------------------------------++-- | Convert from Message to anything using a function taking as String position, expected symbol and action taken respectively+fromMessage :: (Show s, Eq s) => (p -> String -> String -> x) -> Message s p -> x+fromMessage f (Msg e p a) = f p (show e) (show a) 
uhc-util.cabal view
@@ -1,5 +1,5 @@ Name:				uhc-util-Version:			0.1.3.2+Version:			0.1.3.5 cabal-version:      >= 1.6 License:			BSD3 Copyright:			Utrecht University, Department of Information and Computing Sciences, Software Technology group@@ -21,7 +21,7 @@   Build-Depends:     base >= 4 && < 5,     mtl >= 2,-    fgl >= 5.4,+    fgl >= 5.4 && < 5.5,     hashable >= 1.1,     containers >= 0.4,     directory >= 1.1,@@ -61,4 +61,4 @@   Ghc-Options:		   HS-Source-Dirs:     	src   Build-Tools:		-  Extensions:			+  Extensions: NoMagicHash