Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type Span = ((Int, Int), (Int, Int))
- data ParseError
- data Haskellish st a = Haskellish {
- _run :: st -> Exp SrcSpanInfo -> Either ParseError (a, st)
- runHaskellish :: Haskellish st a -> st -> Exp SrcSpanInfo -> Either String (a, st)
- parseAndRun :: Haskellish st a -> st -> String -> Either (Span, Text) (a, st)
- parseWithModeAndRun :: ParseMode -> Haskellish st a -> st -> String -> Either (Span, Text) (a, st)
- removeComments :: String -> String
- removeCommentsSingleLine :: String -> String
- removeCommentsMultiLine :: String -> String
- removeCommentsLiteralString :: String -> String
- exp :: Haskellish st (Exp SrcSpanInfo)
- fatal :: Text -> Haskellish st a
- nonFatal :: Text -> Haskellish st a
- (<?>) :: Haskellish st a -> Text -> Haskellish st a
- (<?!>) :: Haskellish st a -> Text -> Haskellish st a
- required :: Haskellish st a -> Haskellish st a
- (<*!>) :: Haskellish st (a -> b) -> Haskellish st a -> Haskellish st b
- applicationExpressions :: Exp SrcSpanInfo -> Either ParseError (Exp SrcSpanInfo, Exp SrcSpanInfo)
- identifier :: Haskellish st String
- trueOrFalse :: Haskellish st Bool
- reserved :: String -> Haskellish st ()
- string :: Haskellish st String
- integer :: Haskellish st Integer
- rational :: Haskellish st Rational
- rationalOrInteger :: Haskellish st Rational
- list :: Haskellish st a -> Haskellish st [a]
- listExpressions :: Exp SrcSpanInfo -> Either ParseError [Exp SrcSpanInfo]
- tuple :: Haskellish st a -> Haskellish st b -> Haskellish st (a, b)
- asRightSection :: Haskellish st (a -> b -> c) -> Haskellish st b -> Haskellish st (a -> c)
- ifThenElse :: Haskellish st a -> Haskellish st b -> Haskellish st c -> Haskellish st (a, b, c)
- collectDoStatements :: Exp SrcSpanInfo -> [Exp SrcSpanInfo]
- listOfDoStatements :: Haskellish st a -> Haskellish st [a]
- span :: Haskellish st Span
- expToSpan :: Exp SrcSpanInfo -> Span
- srcSpanInfoToSpan :: SrcSpanInfo -> Span
- reverseApplication :: Haskellish st a -> Haskellish st (a -> b) -> Haskellish st b
- binaryApplication :: Haskellish st f -> Haskellish st a -> Haskellish st b -> Haskellish st (f, a, b)
- functionApplication :: Haskellish st a -> Haskellish st b -> Haskellish st (a, b)
- enumFromTo :: Haskellish st a -> Haskellish st b -> Haskellish st (a, b)
- enumFromThenTo :: Haskellish st a -> Haskellish st b -> Haskellish st c -> Haskellish st (a, b, c)
Documentation
data Haskellish st a Source #
Haskellish | |
|
Instances
runHaskellish :: Haskellish st a -> st -> Exp SrcSpanInfo -> Either String (a, st) Source #
parseAndRun :: Haskellish st a -> st -> String -> Either (Span, Text) (a, st) Source #
parseWithModeAndRun :: ParseMode -> Haskellish st a -> st -> String -> Either (Span, Text) (a, st) Source #
removeComments :: String -> String Source #
exp :: Haskellish st (Exp SrcSpanInfo) Source #
fatal :: Text -> Haskellish st a Source #
nonFatal :: Text -> Haskellish st a Source #
(<?>) :: Haskellish st a -> Text -> Haskellish st a Source #
(<?!>) :: Haskellish st a -> Text -> Haskellish st a Source #
required :: Haskellish st a -> Haskellish st a Source #
(<*!>) :: Haskellish st (a -> b) -> Haskellish st a -> Haskellish st b Source #
applicationExpressions :: Exp SrcSpanInfo -> Either ParseError (Exp SrcSpanInfo, Exp SrcSpanInfo) Source #
identifier :: Haskellish st String Source #
trueOrFalse :: Haskellish st Bool Source #
reserved :: String -> Haskellish st () Source #
string :: Haskellish st String Source #
integer :: Haskellish st Integer Source #
rational :: Haskellish st Rational Source #
list :: Haskellish st a -> Haskellish st [a] Source #
tuple :: Haskellish st a -> Haskellish st b -> Haskellish st (a, b) Source #
asRightSection :: Haskellish st (a -> b -> c) -> Haskellish st b -> Haskellish st (a -> c) Source #
ifThenElse :: Haskellish st a -> Haskellish st b -> Haskellish st c -> Haskellish st (a, b, c) Source #
TODO: the relationship of collectDoStatement and listOfDoStatements to
collectDoStatements :: Exp SrcSpanInfo -> [Exp SrcSpanInfo] Source #
listOfDoStatements :: Haskellish st a -> Haskellish st [a] Source #
span :: Haskellish st Span Source #
srcSpanInfoToSpan :: SrcSpanInfo -> Span Source #
reverseApplication :: Haskellish st a -> Haskellish st (a -> b) -> Haskellish st b Source #
binaryApplication :: Haskellish st f -> Haskellish st a -> Haskellish st b -> Haskellish st (f, a, b) Source #
binaryApplication targets the specific situation of parsing a function that is applied to two arguments, given parsers for the function and each of the two arguments. This is intended for rare cases - in most cases, Haskellish's Applicative instance will be a preferred way of parsing function application. Unlike the applicative instance, this function returns the three components (function and two arguments) separately, ie. the function is not actually applied to its arguments in the return type.
functionApplication :: Haskellish st a -> Haskellish st b -> Haskellish st (a, b) Source #
functionApplication parses most cases where one thing is applied to another. Like binaryApplication, it is is intended for rare cases where one wants to match the pattern of one thing being applied to another, without that application "actually" taking place - the parsed sub-expressions are returned instead.
enumFromTo :: Haskellish st a -> Haskellish st b -> Haskellish st (a, b) Source #
enumFromTo matches anything with the following form: [a..b]
enumFromThenTo :: Haskellish st a -> Haskellish st b -> Haskellish st c -> Haskellish st (a, b, c) Source #
enumFromThenTo matches anything with theform [a,b..c]