haskellish-0.3.2.1: For parsing Haskell-ish languages
Safe HaskellNone
LanguageHaskell2010

Language.Haskellish

Synopsis

Documentation

type Span = ((Int, Int), (Int, Int)) Source #

data Haskellish st a Source #

Constructors

Haskellish 

Fields

Instances

Instances details
MonadState st (Haskellish st) Source # 
Instance details

Defined in Language.Haskellish

Methods

get :: Haskellish st st #

put :: st -> Haskellish st () #

state :: (st -> (a, st)) -> Haskellish st a #

MonadError Text (Haskellish st) Source # 
Instance details

Defined in Language.Haskellish

Methods

throwError :: Text -> Haskellish st a #

catchError :: Haskellish st a -> (Text -> Haskellish st a) -> Haskellish st a #

Monad (Haskellish st) Source # 
Instance details

Defined in Language.Haskellish

Methods

(>>=) :: Haskellish st a -> (a -> Haskellish st b) -> Haskellish st b #

(>>) :: Haskellish st a -> Haskellish st b -> Haskellish st b #

return :: a -> Haskellish st a #

Functor (Haskellish st) Source # 
Instance details

Defined in Language.Haskellish

Methods

fmap :: (a -> b) -> Haskellish st a -> Haskellish st b #

(<$) :: a -> Haskellish st b -> Haskellish st a #

Applicative (Haskellish st) Source # 
Instance details

Defined in Language.Haskellish

Methods

pure :: a -> Haskellish st a #

(<*>) :: Haskellish st (a -> b) -> Haskellish st a -> Haskellish st b #

liftA2 :: (a -> b -> c) -> Haskellish st a -> Haskellish st b -> Haskellish st c #

(*>) :: Haskellish st a -> Haskellish st b -> Haskellish st b #

(<*) :: Haskellish st a -> Haskellish st b -> Haskellish st a #

Alternative (Haskellish st) Source # 
Instance details

Defined in Language.Haskellish

Methods

empty :: Haskellish st a #

(<|>) :: Haskellish st a -> Haskellish st a -> Haskellish st a #

some :: Haskellish st a -> Haskellish st [a] #

many :: Haskellish st a -> Haskellish st [a] #

MonadPlus (Haskellish st) Source # 
Instance details

Defined in Language.Haskellish

Methods

mzero :: Haskellish st a #

mplus :: Haskellish st a -> Haskellish st a -> Haskellish st a #

parseAndRun :: Haskellish st a -> st -> String -> Either (Span, Text) (a, st) Source #

(<?>) :: Haskellish st a -> Text -> Haskellish st a Source #

(<*!>) :: Haskellish st (a -> b) -> Haskellish st a -> Haskellish st b 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

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]