module Text.Alex.Quote (
parseAlex
, compileAlex
, alex
) where
import Text.Alex(runAlex, Target(..))
import Text.Alex.AlexTemplate
import Language.Haskell.TH.Quote
import Language.Haskell.TH
import Language.Haskell.TH.Lift
import Language.Haskell.Meta
type Alex = String
compileAlex :: Alex -> Q [Dec]
compileAlex = return . either error id . parseDecs
alex :: QuasiQuoter
alex = QuasiQuoter (lift . parseAlex) (error "pattern quoting is not supported")
parseAlex :: String -> Alex
parseAlex s = fst (runAlex [] Nothing s) ++ "\n" ++ alexTemplate HaskellTarget