-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Syntax Macros in the form of an EDSL
--
-- Library of first-class Syntax Macros
@package SyntaxMacros
@version 1.0
module Language.Grammars.SyntaxMacros.Scanner
scanHandle :: ScanOpts -> FilePath -> Handle -> IO [Token]
scanFile :: ScanOpts -> FilePath -> IO [Token]
scan :: ScanOpts -> Pos -> String -> [Token]
getRational :: String -> (String, Maybe String, Maybe (Maybe String, String))
getBaseNumber :: Integer -> [Char] -> Integer
type Token = GenToken String EnumValToken String
data EnumValToken
TkVarid :: EnumValToken
TkConid :: EnumValToken
TkOp :: EnumValToken
TkConOp :: EnumValToken
TkQVarid :: EnumValToken
TkQConid :: EnumValToken
TkQOp :: EnumValToken
TkQConOp :: EnumValToken
TkString :: EnumValToken
TkChar :: EnumValToken
TkInteger8 :: EnumValToken
TkInteger10 :: EnumValToken
TkInteger16 :: EnumValToken
TkFraction :: EnumValToken
TkTextnm :: EnumValToken
TkTextln :: EnumValToken
TkError :: EnumValToken
reserved :: String -> Pos -> Token
valueToken :: EnumValToken -> String -> Pos -> Token
errToken :: String -> Pos -> Token
tokTpIsInt :: EnumValToken -> Bool
tokTpIsId :: EnumValToken -> Bool
tokTpQual :: EnumValToken -> EnumValToken
pKeyPos :: IsParser p Token => String -> p Pos
pSpecPos :: IsParser p Token => Char -> p Pos
pKey :: IsParser p Token => String -> p String
pSpec :: IsParser p Token => Char -> p String
pCharPos :: IsParser p Token => p (String, Pos)
pInteger8Pos :: IsParser p Token => p (String, Pos)
pInteger10Pos :: IsParser p Token => p (String, Pos)
pInteger16Pos :: IsParser p Token => p (String, Pos)
pFractionPos :: IsParser p Token => p (String, Pos)
pVaridPos :: IsParser p Token => p (String, Pos)
pConidPos :: IsParser p Token => p (String, Pos)
pTextnmPos :: IsParser p Token => p (String, Pos)
pTextlnPos :: IsParser p Token => p (String, Pos)
pIntegerPos :: IsParser p Token => p (String, Pos)
pVarsymPos :: IsParser p Token => p (String, Pos)
pConsymPos :: IsParser p Token => p (String, Pos)
pStringPos :: IsParser p Token => p (String, Pos)
pChar :: IsParser p Token => p String
pInteger8 :: IsParser p Token => p String
pInteger10 :: IsParser p Token => p String
pInteger16 :: IsParser p Token => p String
pFraction :: IsParser p Token => p String
pVarid :: IsParser p Token => p String
pConid :: IsParser p Token => p String
pTextnm :: IsParser p Token => p String
pTextln :: IsParser p Token => p String
pInteger :: IsParser p Token => p String
pVarsym :: IsParser p Token => p String
pConsym :: IsParser p Token => p String
pString :: IsParser p Token => p String
pSemi :: IsParser p Token => p String
pOParen :: IsParser p Token => p String
pCParen :: IsParser p Token => p String
pOBrack :: IsParser p Token => p String
pCBrack :: IsParser p Token => p String
pOCurly :: IsParser p Token => p String
pCCurly :: IsParser p Token => p String
pComma :: IsParser p Token => p String
pSemiPos :: IsParser p Token => p Pos
pOParenPos :: IsParser p Token => p Pos
pCParenPos :: IsParser p Token => p Pos
pOBrackPos :: IsParser p Token => p Pos
pCBrackPos :: IsParser p Token => p Pos
pOCurlyPos :: IsParser p Token => p Pos
pCCurlyPos :: IsParser p Token => p Pos
pCommaPos :: IsParser p Token => p Pos
pCommas :: IsParser p Token => p a -> p [a]
pSemics :: IsParser p Token => p a -> p [a]
pParens :: IsParser p Token => p a -> p a
pBracks :: IsParser p Token => p a -> p a
pCurly :: IsParser p Token => p a -> p a
pParens_pCommas :: IsParser p Token => p a -> p [a]
pBracks_pCommas :: IsParser p Token => p a -> p [a]
pCurly_pSemics :: IsParser p Token => p a -> p [a]
data ScanOpts
ScanOpts :: !Set String -> !Set String -> !Set String -> !Set Char -> !Set Char -> !Set String -> !Bool -> ![String] -> !String -> !String -> !String -> !Bool -> ![(String, String)] -> !Bool -> ScanOpts
scoKeywordsTxt :: ScanOpts -> !Set String
scoCommandsTxt :: ScanOpts -> !Set String
scoKeywordsOps :: ScanOpts -> !Set String
scoSpecChars :: ScanOpts -> !Set Char
scoOpChars :: ScanOpts -> !Set Char
scoSpecPairs :: ScanOpts -> !Set String
scoDollarIdent :: ScanOpts -> !Bool
scoOffsideTrigs :: ScanOpts -> ![String]
scoOffsideModule :: ScanOpts -> !String
scoOffsideOpen :: ScanOpts -> !String
scoOffsideClose :: ScanOpts -> !String
scoLitmode :: ScanOpts -> !Bool
scoVerbOpenClose :: ScanOpts -> ![(String, String)]
scoAllowQualified :: ScanOpts -> !Bool
defaultScanOpts :: ScanOpts
isNoPos :: Pos -> Bool
posIs1stColumn :: Pos -> Bool
data InFilePos
InFilePos :: Int -> Int -> InFilePos
infpLine :: InFilePos -> Int
infpColumn :: InFilePos -> Int
infpStart :: InFilePos
infpNone :: InFilePos
infpAdvCol :: Int -> InFilePos -> InFilePos
infpAdvLine :: Int -> InFilePos -> InFilePos
infpAdv1Line :: InFilePos -> InFilePos
infpAdvStr :: String -> InFilePos -> InFilePos
genTokVal :: GenToken v t v -> v
genTokTp :: GenToken k t v -> Maybe t
genTokMap :: (a -> b) -> GenToken a t a -> GenToken b t b
isLF :: Char -> Bool
isStr :: Char -> Bool
isStrQuote :: Char -> Bool
isWhite :: Char -> Bool
isBlack :: Char -> Bool
isVarStart :: Char -> Bool
isVarRest :: Char -> Bool
module Language.Grammars.Grammar
data TL
data FL a
data Grammar a
Grammar :: (Ref a env) -> (GramEnv env env) -> Grammar a
type GramEnv = Env (Productions TL)
newtype Productions l a env
PS :: [Prod l a env] -> Productions l a env
unPS :: Productions l a env -> [Prod l a env]
data Prod l a env
Star :: Prod l (a -> b) env -> Prod l a env -> Prod l b env
FlipStar :: Prod l a env -> Prod l (a -> b) env -> Prod l b env
Sym :: Symbol a t env -> Prod l a env
Pure :: a -> Prod l a env
Fix :: Productions (FL a) a env -> Prod l a env
Var :: Prod (FL a) a env
type DTerm = String
data TTerm
data TNonT
data TAttT
data Symbol a t env
Term :: String -> Symbol DTerm TTerm env
Nont :: Ref a env -> Symbol a TNonT env
TermInt :: Symbol Int TAttT env
TermChar :: Symbol Char TAttT env
TermVarid :: Symbol String TAttT env
TermConid :: Symbol String TAttT env
TermOp :: Symbol String TAttT env
getRefNT :: Symbol a TNonT env -> Ref a env
pairEq :: Maybe (Equal a b) -> Maybe (Equal (a, t) (b, t))
matchSym :: Symbol a t1 env -> Symbol b t2 env -> Maybe (Equal (a, t1) (b, t2))
int :: Symbol Int TAttT env
char :: Symbol Char TAttT env
var :: Symbol String TAttT env
con :: Symbol String TAttT env
op :: Symbol String TAttT env
newtype ListProd l env a
PP :: [Prod l a env] -> ListProd l env a
unPP :: ListProd l env a -> [Prod l a env]
prod :: ListProd l env a -> Productions l a env
sym :: Symbol a t env -> ListProd l env a
nt :: Symbol a TNonT env -> ListProd l env a
ntPrd :: Symbol a TNonT env -> ListProd l env a
tr :: String -> ListProd l env DTerm
varPrd :: ListProd (FL a) env a
fixPrd :: ListProd (FL a) env a -> ListProd l env a
toFL :: ListProd l env a -> ListProd (FL b) env a
prodToFL :: Prod l a env -> Prod (FL b) a env
pSome :: ListProd (FL [a]) env a -> ListProd l env [a]
pMany :: ListProd (FL [a]) env a -> ListProd l env [a]
-- | The Ii is to be pronounced as stop
data Ii
Ii :: Ii
-- | The function iI is to be pronounced as start
iI :: Idiomatic l env (a -> a) g => g
class Idiomatic l env f g | g -> f l env
idiomatic :: Idiomatic l env f g => ListProd l env f -> g
newtype LSPair nt a t env
LSPair :: (Symbol a t env) -> LSPair nt a t env
symLSPair :: LSPair nt a t env -> (Symbol a t env)
labelLSPair :: LSPair nt a t env -> nt
(^=) :: nt -> Symbol a t env -> LSPair nt a t env
class LabelSymbol t v v' | t v -> v'
(<=>) :: LabelSymbol t v v' => label -> Symbol v t env -> ListProd l env (LVPair label v')
class ShowEnv a
showEnv :: ShowEnv a => Int -> a -> String
instance Show (Ref a env)
instance Show (Symbol a t env)
instance Show (Prod l a env)
instance Show (Productions l a env)
instance ShowEnv (Env (Productions l) env env')
instance ShowEnv (Env (Productions l) env env') => Show (Env (Productions l) env env')
instance Show (Grammar a)
instance LabelSymbol TTerm v v
instance LabelSymbol TNonT v v
instance LabelSymbol TAttT v (Record HNil -> v)
instance Idiomatic l env f g => Idiomatic l env f (String -> g)
instance Idiomatic l env f g => Idiomatic l env ((a -> b) -> f) ((a -> b) -> g)
instance Idiomatic l env f g => Idiomatic l env (a -> f) (ListProd l env a -> g)
instance Idiomatic l env x (Ii -> ListProd l env x)
instance Alternative (ListProd l env)
instance Applicative (ListProd l env)
instance Functor (ListProd l env)
module Language.Grammars.SyntaxMacros
type GramTrafo = Trafo Unit (Productions TL)
type ExtGram env start nts = GramTrafo env () (Export start nts env)
type SyntaxMacro env start nts start' nts' = GramTrafo env (Export start nts env) (Export start' nts' env)
data Export start nts env
Export :: (Symbol start TNonT env) -> (nts env) -> Export start nts env
addNT :: GramTrafo env (ListProd TL env a) (Symbol a TNonT env)
addProds :: GramTrafo env (Symbol a TNonT env, ListProd TL env a) ()
closeGram :: (forall env. ExtGram env a nts) -> Grammar a
extendGram :: (NTRecord (nts env), NTRecord (nts' env)) => ExtGram env start nts -> SyntaxMacro env start nts start' nts' -> ExtGram env start' nts'
(<++>) :: (NTRecord (nts env), NTRecord (nts' env)) => ExtGram env start nts -> SyntaxMacro env start nts start' nts' -> ExtGram env start' nts'
exportNTs :: NTRecord (nts env) => GramTrafo env (Export start nts env) (Export start nts env)
data NTCons nt v l env
NTCons :: (LSPair nt v TNonT env) -> (l env) -> NTCons nt v l env
data NTNil env
NTNil :: NTNil env
class NTRecord r
class Fail err
data Duplicated nt
class NotDuplicated nt r
ntNil :: NTNil env
(^|) :: NTRecord (NTCons nt a l env) => LSPair nt a TNonT env -> l env -> NTCons nt a l env
class GetNT nt r v | nt r -> v
getNT :: GetNT nt r v => nt -> r -> v
data NotFound nt
getStart :: Export start nts env -> (Symbol start TNonT env)
exportList :: Symbol start TNonT env -> (NTNil env -> nts env) -> Export start nts env
export :: (NTRecord (l env), NotDuplicated nt (l env)) => nt -> Symbol a TNonT env -> l env -> NTCons nt a l env
pInt :: Parser Token Int
pChr :: Parser Token Char
pCon :: Parser Token String
pVar :: Parser Token String
pOp :: Parser Token String
pTerm :: IsParser p Token => String -> p DTerm
newtype Const f a s
C :: f a -> Const f a s
unC :: Const f a s -> f a
compile :: Grammar a -> Parser Token a
mapEnv :: (forall a. f a s -> g a s) -> Env f s env -> Env g s env
type ParseMsg = Message Token (Maybe Token)
data ParseResult a
Ok :: a -> ParseResult a
Rep :: a -> [ParseMsg] -> ParseResult a
parse :: Parser Token a -> [Token] -> ParseResult a
rparse :: Parser Token a -> [Token] -> (a, [ParseMsg])
instance [overlap ok] Show a => Show (ParseResult a)
instance [overlap ok] GetNT nt (nts env) r => GetNT nt (Export start nts env) r
instance [overlap ok] GetNT nt1 (l env) r => GetNT nt1 (NTCons nt2 v l env) r
instance [overlap ok] GetNT nt (NTCons nt v l env) (Symbol v TNonT env)
instance [overlap ok] Fail (NotFound nt) => GetNT nt (NTNil env) r
instance [overlap ok] NotDuplicated nt1 (l env) => NotDuplicated nt1 (NTCons nt2 v l env)
instance [overlap ok] Fail (Duplicated nt) => NotDuplicated nt (NTCons nt v l env)
instance [overlap ok] NotDuplicated nt (NTNil env)
instance [overlap ok] (NTRecord (l env), NotDuplicated nt (l env)) => NTRecord (NTCons nt v l env)
instance [overlap ok] NTRecord (NTNil env)