module TestImport ( testParseExpr , testPrintExpr -- * Re-exports , module X ) where -- re-exports import Language.Haskell.TH.Syntax as X ( Exp(..) , Name(..) , Lit(..) , mkName ) import Language.Egison.Parser.Pattern as X ( Errors ) import Language.Egison.Syntax.Pattern as X -- main import Data.Text ( Text ) import Control.Monad.Except ( MonadError ) import qualified Language.Haskell.Exts.Parser as Haskell ( defaultParseMode ) import Language.Egison.Syntax.Pattern.Fixity ( Fixity(..) , Precedence(..) , Associativity(..) ) import qualified Language.Egison.Parser.Pattern.Mode.Haskell.TH as THParseMode ( Expr , parseExpr ) import Language.Egison.Pretty.Pattern ( Error ) import qualified Language.Egison.Pretty.Pattern.Mode.Haskell.TH as THPrintMode ( Expr , prettyExprWithFixities ) testParseExpr :: MonadError (Errors String) m => String -> m THParseMode.Expr testParseExpr = THParseMode.parseExpr Haskell.defaultParseMode specialFixities :: [Fixity Name] specialFixities = [ Fixity AssocRight (Precedence 5) (mkName "++") , Fixity AssocRight (Precedence 5) (mkName ":") , Fixity AssocRight (Precedence 5) (mkName "Special.:") , Fixity AssocLeft (Precedence 7) (mkName "mod") , Fixity AssocLeft (Precedence 7) (mkName "Special.mod") ] testPrintExpr :: MonadError (Error Name) m => THPrintMode.Expr -> m Text testPrintExpr = THPrintMode.prettyExprWithFixities specialFixities