-- 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.3 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 pStringPos, pConsymPos, pVarsymPos, pIntegerPos, pTextlnPos, pTextnmPos, pConidPos, pVaridPos, pFractionPos, pInteger16Pos, pInteger10Pos, pInteger8Pos, pCharPos :: IsParser p Token => p (String, Pos) pString, pConsym, pVarsym, pInteger, pTextln, pTextnm, pConid, pVarid, pFraction, pInteger16, pInteger10, pInteger8, pChar :: IsParser p Token => p String pComma, pCCurly, pOCurly, pCBrack, pOBrack, pCParen, pOParen, pSemi :: IsParser p Token => p String pCommaPos, pCCurlyPos, pOCurlyPos, pCBrackPos, pOBrackPos, pCParenPos, pOParenPos, pSemiPos :: 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 NF data Grammar a Grammar :: (Ref a env) -> (FinalEnv (Productions NF) env) -> Grammar a 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 NF a env -> Prod NF (a -> b) env -> Prod NF b env Sym :: Symbol a t env -> Prod l a env Pure :: a -> Prod l a env Fix :: Productions (FL a) a env -> Prod TL a env Var :: Prod (FL a) a env type GramEnv = Env (Productions NF) type PreGramEnv = Env (Productions TL) newtype PreProductions l env a PP :: [Prod l a env] -> PreProductions l env a unPP :: PreProductions l env a -> [Prod l a env] type Line = Int type Column = Int type Filename = String data Pos Pos :: !Line -> !Column -> Pos PosFile :: !Line -> !Column -> Filename -> Pos data DTerm a DTerm :: Pos -> a -> DTerm a pos :: DTerm a -> Pos value :: DTerm a -> a data TTerm data TNonT data TAttT data Symbol a t env Term :: String -> Symbol (DTerm String) TTerm env Nont :: Ref a env -> Symbol a TNonT env TermInt :: Symbol (DTerm Int) TAttT env TermChar :: Symbol (DTerm Char) TAttT env TermVarid :: Symbol (DTerm String) TAttT env TermConid :: Symbol (DTerm String) TAttT env TermOp :: Symbol (DTerm 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 (DTerm Int) TAttT env char :: Symbol (DTerm Char) TAttT env var :: Symbol (DTerm String) TAttT env con :: Symbol (DTerm String) TAttT env op :: Symbol (DTerm String) TAttT env sym :: Symbol a t env -> PreProductions l env a nt :: Symbol a TNonT env -> PreProductions l env a ntPrd :: Symbol a TNonT env -> PreProductions l env a tr :: String -> PreProductions l env (DTerm String) prod :: PreProductions l env a -> Productions l a env varPrd :: PreProductions (FL a) env a fixPrd :: PreProductions (FL a) env a -> PreProductions TL env a pSome :: PreProductions (FL [a]) env a -> PreProductions TL env [a] pMany :: PreProductions (FL [a]) env a -> PreProductions TL env [a] opt :: PreProductions l env a -> a -> PreProductions l env a pMaybe :: (b, a -> b) -> PreProductions TL env a -> PreProductions TL env b pFoldr :: (a -> b -> b, b) -> PreProductions (FL b) env a -> PreProductions TL env b -- | 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 => PreProductions 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 -> PreProductions l env (LVPair label v') instance Show Pos 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 ((Record HNil -> a) -> f) (Symbol a TAttT env -> g) instance Idiomatic l env f g => Idiomatic l env (a -> f) (Symbol a TNonT env -> g) instance Idiomatic l env f g => Idiomatic l env (a -> f) (PreProductions l env a -> g) instance Idiomatic l env x (Ii -> PreProductions l env x) instance Alternative (PreProductions l env) instance Applicative (PreProductions l env) instance Functor (PreProductions l env) module Language.Grammars.SyntaxMacros.UUParsing type Parser a = P (Str Char String LineCol) a pInt :: Parser Int pChr :: Parser Char pVar :: Parser String pCon :: Parser String pIdChar :: Parser Char pOp :: Parser String pTerm :: String -> Parser String spaces :: Parser String lc2Pos :: LineCol -> Pos newtype Const f a s C :: f a -> Const f a s unC :: Const f a s -> f a -- | The function compile generates a parser out of a closed grammar compile :: Grammar a -> Parser a mapEnv :: (forall a. f a s -> g a s) -> Env f s env -> Env g s env data ParseResult a Ok :: a -> ParseResult a Rep :: a -> [Error LineCol] -> ParseResult a -- | The function parse runs the parser for an input. parse :: Parser a -> String -> ParseResult a instance Show a => Show (ParseResult a) module Language.Grammars.SyntaxMacros.UULib toPos :: Pos -> Pos toDTerm :: (a -> b) -> (a, Pos) -> DTerm b pChr :: Parser Token (DTerm Char) pInt :: Parser Token (DTerm Int) pCon :: Parser Token (DTerm String) pVar :: Parser Token (DTerm String) pOp :: Parser Token (DTerm String) pTerm :: IsParser p Token => String -> p (DTerm 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 Show a => Show (ParseResult a) module Language.Grammars.SyntaxMacros type GramTrafo = Trafo Unit (Productions NF) type PreGramTrafo = Trafo Unit (Productions TL) type ExtGram env start nts = PreGramTrafo env () (Export start nts env) type SyntaxMacro env start nts start' nts' = PreGramTrafo 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 :: PreGramTrafo env (PreProductions TL env a) (Symbol a TNonT env) addProds :: PreGramTrafo env (Symbol a TNonT env, PreProductions 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) => PreGramTrafo 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 extendExport :: Export start t env -> (t env -> nts env) -> Export start nts env 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)