-- 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)