Copyright | (c) Juan García Garland |
---|---|
License | GPL |
Maintainer | jpgarcia@fing.edu.uy |
Stability | experimental |
Portability | POSIX |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- str2Sym :: String -> TypeQ
- attLabel :: String -> Name -> DecsQ
- attMono :: String -> Name -> DecsQ
- attPoly :: String -> DecsQ
- attLabels :: [(String, Name)] -> Q [Dec]
- addNont :: String -> Q [Dec]
- addNTLabel :: String -> Q [Dec]
- addNTType :: String -> Q [Dec]
- type family Terminal s :: Either NT T where ...
- type family NonTerminal s where ...
- data SymTH
- addChi :: String -> Name -> SymTH -> Q [Dec]
- addPrd :: String -> Name -> Q [Dec]
- addPrdLabel :: String -> Name -> DecsQ
- addPrdType :: Monad m => [Char] -> Name -> m [Dec]
- addProd :: String -> Name -> [(String, SymTH)] -> Q [Dec]
- class Prods (lhs :: NT) (name :: Symbol) (rhs :: [(Symbol, Symbol)])
- getInstances :: Q [InstanceDec]
- showInstances :: Q Exp
- addInstance :: Name -> String -> [(Name, Name)] -> Q [Dec]
- typeList :: [(Name, Name)] -> Q Type
- nameToSymbol :: Show a => a -> TypeQ
- nameToSymbolBase :: Name -> TypeQ
- isNTName :: Name -> Bool
- closeNT :: Name -> Q [Dec]
- isInstanceOf :: Name -> Dec -> Bool
- mkCon :: InstanceDec -> Con
- mkBangP :: (a, Name) -> (Bang, Type)
- mkBangPR :: (a, Name) -> (a, Bang, Type)
- getTList :: Type -> [(Name, Name)]
- getTListNT :: Type -> [(Name, Name)]
- mkClause :: InstanceDec -> Clause
- toSemRec :: [(Name, Name)] -> Exp
- closeNTs :: [Name] -> Q [Dec]
- mkSemFunc :: Name -> Q [Dec]
- mkSemFuncs :: [Name] -> Q [Dec]
Attribute labels
attLabel :: String -> Name -> DecsQ #
TH function to define a typed attribute label given a name and a quoted type
Non terminals
addNTLabel :: String -> Q [Dec] #
Productions
type family NonTerminal s where ... #
NonTerminal s = Left s |
addPrdLabel :: String -> Name -> DecsQ #
getInstances :: Q [InstanceDec] #
showInstances :: Q Exp #
nameToSymbol :: Show a => a -> TypeQ #
nameToSymbolBase :: Name -> TypeQ #
isInstanceOf :: Name -> Dec -> Bool #
mkCon :: InstanceDec -> Con #
getTListNT :: Type -> [(Name, Name)] #
keeps nt info
mkClause :: InstanceDec -> Clause #
like |mkCon| in semantic functions, builds a case
mkSemFuncs :: [Name] -> Q [Dec] #