    {-# LANGUAGE NoImplicitPrelude          #-}
    {-# LANGUAGE CPP                        #-}
    #if __GLASGOW_HASKELL__ >= 800
    {-# LANGUAGE TemplateHaskellQuotes      #-}
    #else
    {-# LANGUAGE QuasiQuotes                #-}
    {-# LANGUAGE TemplateHaskell            #-}
    #endif

    module Text.RE.ZeInternals.SearchReplace.TDFA
      ( ed
      , edMS
      , edMI
      , edBS
      , edBI
      , edMultilineSensitive
      , edMultilineInsensitive
      , edBlockSensitive
      , edBlockInsensitive
      , ed_
      ) where

    import           Language.Haskell.TH
    import           Language.Haskell.TH.Quote
    import           Prelude.Compat
    import           Text.RE.REOptions
    import           Text.RE.ZeInternals.SearchReplace.TDFAEdPrime

    -- | the @[ed| ... /// ... |]@ quasi quoters
    ed
      , edMS
      , edMI
      , edBS
      , edBI
      , edMultilineSensitive
      , edMultilineInsensitive
      , edBlockSensitive
      , edBlockInsensitive
      , ed_ :: QuasiQuoter

    ed :: QuasiQuoter
    ed                       = Q Exp -> Maybe SimpleREOptions -> QuasiQuoter
    ed' Q Exp
    cast (Maybe SimpleREOptions -> QuasiQuoter)
    -> Maybe SimpleREOptions -> QuasiQuoter
    forall a b. (a -> b) -> a -> b
    $ SimpleREOptions -> Maybe SimpleREOptions
    forall a. a -> Maybe a
    Just SimpleREOptions
    forall a. Bounded a => a
    minBound
    edMS :: QuasiQuoter
    edMS                     = QuasiQuoter
    edMultilineSensitive
    edMI :: QuasiQuoter
    edMI                     = QuasiQuoter
    edMultilineInsensitive
    edBS :: QuasiQuoter
    edBS                     = QuasiQuoter
    edBlockSensitive
    edBI :: QuasiQuoter
    edBI                     = QuasiQuoter
    edBlockInsensitive
    edMultilineSensitive :: QuasiQuoter
    edMultilineSensitive     = Q Exp -> Maybe SimpleREOptions -> QuasiQuoter
    ed' Q Exp
    cast (Maybe SimpleREOptions -> QuasiQuoter)
    -> Maybe SimpleREOptions -> QuasiQuoter
    forall a b. (a -> b) -> a -> b
    $ SimpleREOptions -> Maybe SimpleREOptions
    forall a. a -> Maybe a
    Just  SimpleREOptions
    MultilineSensitive
    edMultilineInsensitive :: QuasiQuoter
    edMultilineInsensitive   = Q Exp -> Maybe SimpleREOptions -> QuasiQuoter
    ed' Q Exp
    cast (Maybe SimpleREOptions -> QuasiQuoter)
    -> Maybe SimpleREOptions -> QuasiQuoter
    forall a b. (a -> b) -> a -> b
    $ SimpleREOptions -> Maybe SimpleREOptions
    forall a. a -> Maybe a
    Just  SimpleREOptions
    MultilineInsensitive
    edBlockSensitive :: QuasiQuoter
    edBlockSensitive         = Q Exp -> Maybe SimpleREOptions -> QuasiQuoter
    ed' Q Exp
    cast (Maybe SimpleREOptions -> QuasiQuoter)
    -> Maybe SimpleREOptions -> QuasiQuoter
    forall a b. (a -> b) -> a -> b
    $ SimpleREOptions -> Maybe SimpleREOptions
    forall a. a -> Maybe a
    Just  SimpleREOptions
    BlockSensitive
    edBlockInsensitive :: QuasiQuoter
    edBlockInsensitive       = Q Exp -> Maybe SimpleREOptions -> QuasiQuoter
    ed' Q Exp
    cast (Maybe SimpleREOptions -> QuasiQuoter)
    -> Maybe SimpleREOptions -> QuasiQuoter
    forall a b. (a -> b) -> a -> b
    $ SimpleREOptions -> Maybe SimpleREOptions
    forall a. a -> Maybe a
    Just  SimpleREOptions
    BlockInsensitive
    ed_ :: QuasiQuoter
    ed_                      = Q Exp -> Maybe SimpleREOptions -> QuasiQuoter
    ed' Q Exp
    cast   Maybe SimpleREOptions
    forall a. Maybe a
    Nothing

    cast :: Q Exp
    cast :: Q Exp
    cast = [|id|]