-- 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.1 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 env -> Prod (b -> a) env -> Prod a env End :: a -> Prod a env data DTerm DTerm :: DTerm data Symbol a env Term :: String -> Symbol DTerm env Nont :: Ref a env -> Symbol a env NontInt :: Symbol Int env NontChar :: Symbol Char env NontVarid :: Symbol String env NontConid :: Symbol String env NontOp :: Symbol String env ext :: Env Productions env def' -> [Prod a env] -> Env Productions env (def', a) matchSym :: Symbol a env -> Symbol b env -> Maybe (Equal a b) append :: (a -> b -> c) -> Prod a env -> Symbol b env -> Prod c env data Lit a env Lit :: (a env) -> Lit a env int :: Lit (Symbol Int) env char :: Lit (Symbol Char) env var :: Lit (Symbol String) env con :: Lit (Symbol String) env op :: Lit (Symbol String) env 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 env) -> (nts env) -> Export start nts env addNT :: GramTrafo env [Prod a env] (Symbol a env) addProds :: GramTrafo env (Symbol a 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 env) -> NTField nt a env symbolNTField :: NTField nt a env -> (Symbol a 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 (^=) :: nt -> (Symbol a 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 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 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)