31 lines
976 B
Haskell
31 lines
976 B
Haskell
module Rlp.TH
|
|
( rlpProg
|
|
)
|
|
where
|
|
--------------------------------------------------------------------------------
|
|
import Language.Haskell.TH
|
|
import Language.Haskell.TH.Syntax hiding (Module)
|
|
import Language.Haskell.TH.Quote
|
|
import Control.Monad ((>=>))
|
|
import Compiler.RLPC
|
|
import Data.Default.Class (def)
|
|
import Data.Text qualified as T
|
|
import Rlp.Parse
|
|
--------------------------------------------------------------------------------
|
|
|
|
rlpProg :: QuasiQuoter
|
|
rlpProg = QuasiQuoter
|
|
{ quoteExp = qRlpProg
|
|
, quotePat = error "rlp quasiquotes may only be used in expressions"
|
|
, quoteType = error "rlp quasiquotes may only be used in expressions"
|
|
, quoteDec = error "rlp quasiquotes may only be used in expressions"
|
|
}
|
|
|
|
qRlpProg :: String -> Q Exp
|
|
qRlpProg s = case parse (T.pack s) of
|
|
Nothing -> error "error lol iddfk"
|
|
Just a -> lift a
|
|
where
|
|
parse = execP' parseRlpProg
|
|
|