-- 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 0.2 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 Grammar a Grammar :: (Ref a env) -> (Env Productions env env) -> Grammar a newtype Productions a env PS :: [Prod a env] -> Productions a env unPS :: Productions a env -> [Prod a env] data Prod a env Seq :: Symbol b t env -> Prod (b -> a) env -> Prod a env End :: a -> Prod a env data DTerm DTerm :: DTerm 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 NontInt :: Symbol Int TAttT env NontChar :: Symbol Char TAttT env NontVarid :: Symbol String TAttT env NontConid :: Symbol String TAttT env NontOp :: 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)) append :: (a -> b -> c) -> Prod a env -> Symbol b t env -> Prod c env 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 data EP a b env EP :: a -> (b env) -> EP a b env (<=>) :: a -> b env -> EP a b env data PreProd a b env PreProd :: (a -> (Prod b env)) -> PreProd a b env class ProdSeq a b c d | a c -> b d (<.>) :: (ProdSeq a b c d) => a env -> b env -> PreProd c d env prdEnd :: PreProd (Record HNil -> b) b env prd :: (a -> b) -> PreProd (a -> b) t t1 -> Prod t t1 prdId :: Symbol a TNonT env -> Prod a env instance ProdSeq (Symbol DTerm TTerm) (PreProd (t1 -> DTerm -> t2) (DTerm -> a)) (t1 -> t2) a instance (HExtend (LVPair t (Record HNil -> v)) l l') => ProdSeq (EP t (Symbol b TAttT)) (PreProd (l -> v -> t2) (b -> a)) (l' -> t2) a instance (HExtend (LVPair t v) l l') => ProdSeq (EP t (Symbol b TNonT)) (PreProd (l -> v -> t2) (b -> a)) (l' -> t2) a module Language.Grammars.SyntaxMacros type GramTrafo = Trafo Unit Productions type ExtGram env nts = GramTrafo env () (nts env) type SyntaxMacro env nts nts' = GramTrafo env (nts env) (nts' env) data Export start nts env Export :: (Symbol start TNonT env) -> (nts env) -> Export start nts env addNT :: GramTrafo env [Prod a env] (Symbol a TNonT env) addProds :: GramTrafo env (Symbol a TNonT env, [Prod a env]) () closeGram :: (forall env. ExtGram env (Export a nts)) -> Grammar a extendGram :: (NTRecord (nts env), NTRecord (nts' env)) => ExtGram env (Export start nts) -> SyntaxMacro env (Export start nts) (Export start' nts') -> ExtGram env (Export start' nts') exportNTs :: (NTRecord (nts env)) => GramTrafo env (Export start nts env) (Export start nts env) newtype NTField nt a env NTField :: (Symbol a TNonT env) -> NTField nt a env symbolNTField :: NTField nt a env -> (Symbol a TNonT env) labelNTField :: NTField nt a env -> nt data NTCons nt v l env NTCons :: (NTField nt v 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 (^=) :: nt -> (Symbol a TNonT env) -> NTField nt a env (^|) :: (NTRecord (NTCons nt a l env)) => NTField nt a 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 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 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)