packages feed

BNFC-meta-0.1: Language/LBNF/LiftBNF.hs

{-#Language TemplateHaskell #-}
module Language.LBNF.LiftBNF where
import Language.LBNF.AbsBNF
import Language.Haskell.TH.Lift
import Language.Haskell.TH.Syntax hiding (Exp)
import Language.Haskell.TH hiding (Exp)

import qualified Language.LBNF.CF as CF

deriveLift ''Grammar
deriveLift ''Def
deriveLift ''Exp
deriveLift ''Arg
deriveLift ''RHS
deriveLift ''MinimumSize
deriveLift ''ProfItem
deriveLift ''LabelId
deriveLift ''IntList
deriveLift ''Reg
deriveLift ''Item
deriveLift ''Cat
deriveLift ''Label

deriveLift ''HsTyp

instance Lift Ident where
  lift (Ident s) = [| Ident s|]
  
instance Lift Double where
  lift d = litE (DoublePrimL $ toRational d)
  
  
deriveLift ''CF.Exp
deriveLift ''CF.Pragma