module Language.Haskell.Tools.AST.TH where
import Language.Haskell.Tools.AST.Decls
import Language.Haskell.Tools.AST.Binds
import Language.Haskell.Tools.AST.Exprs
import Language.Haskell.Tools.AST.Patterns
import Language.Haskell.Tools.AST.Types
import Language.Haskell.Tools.AST.Base
import Language.Haskell.Tools.AST.Ann
data Splice a
= IdSplice { _spliceId :: Ann Name a
}
| ParenSplice { _spliceExpr :: Ann Expr a
}
data QuasiQuote a
= QuasiQuote { _qqExprName :: Ann Name a
, _qqExprBody :: Ann QQString a
}
data QQString a
= QQString { _qqString :: String
}
data Bracket a
= ExprBracket { _bracketExpr :: Ann Expr a
}
| PatternBracket { _bracketPattern :: Ann Pattern a
}
| TypeBracket { _bracketType :: Ann Type a
}
| DeclsBracket { _bracketDecl :: AnnList Decl a
}