{-#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