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 +28/−2
- uhc-util.cabal +3/−3
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