diff options
Diffstat (limited to 'src/AST/Pretty.hs')
-rw-r--r-- | src/AST/Pretty.hs | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/AST/Pretty.hs b/src/AST/Pretty.hs index 4190f32..35c78c1 100644 --- a/src/AST/Pretty.hs +++ b/src/AST/Pretty.hs @@ -7,7 +7,7 @@ {-# LANGUAGE PolyKinds #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeOperators #-} -module AST.Pretty (ppExpr, ppTy, PrettyX(..)) where +module AST.Pretty (ppExpr, ppSTy, ppTy, PrettyX(..)) where import Control.Monad (ap) import Data.List (intersperse) @@ -252,7 +252,7 @@ ppExpr' d val expr = case expr of ppApp (annotate AMonoid (ppString "accum") <> ppX expr) [ppString (show (fromSNat i)), e1', e2', e3'] EZero _ t -> return $ parens $ - annotate AMonoid (ppString "zero") <> ppX expr <+> ppString "::" <+> ppTy' 0 t <> ppString ")" + annotate AMonoid (ppString "zero") <> ppX expr <+> ppString "::" <+> ppSTy' 0 t <> ppString ")" EPlus _ _ a b -> do a' <- ppExpr' 11 val a @@ -321,23 +321,29 @@ operator OExp{} = (Prefix, "exp") operator OLog{} = (Prefix, "log") operator OIDiv{} = (Infix, "`div`") -ppTy :: Int -> STy t -> String +ppSTy :: Int -> STy t -> String +ppSTy d ty = ppTy d (unSTy ty) + +ppSTy' :: Int -> STy t -> Doc q +ppSTy' d ty = ppTy' d (unSTy ty) + +ppTy :: Int -> Ty -> String ppTy d ty = render $ ppTy' d ty -ppTy' :: Int -> STy t -> Doc q -ppTy' _ STNil = ppString "1" -ppTy' d (STPair a b) = ppParen (d > 7) $ ppTy' 8 a <> ppString " * " <> ppTy' 8 b -ppTy' d (STEither a b) = ppParen (d > 6) $ ppTy' 7 a <> ppString " + " <> ppTy' 7 b -ppTy' d (STMaybe t) = ppParen (d > 10) $ ppString "Maybe " <> ppTy' 11 t -ppTy' d (STArr n t) = ppParen (d > 10) $ - ppString "Arr " <> ppString (show (fromSNat n)) <> ppString " " <> ppTy' 11 t -ppTy' _ (STScal sty) = ppString $ case sty of - STI32 -> "i32" - STI64 -> "i64" - STF32 -> "f32" - STF64 -> "f64" - STBool -> "bool" -ppTy' d (STAccum t) = ppParen (d > 10) $ ppString "Accum " <> ppTy' 11 t +ppTy' :: Int -> Ty -> Doc q +ppTy' _ TNil = ppString "1" +ppTy' d (TPair a b) = ppParen (d > 7) $ ppTy' 8 a <> ppString " * " <> ppTy' 8 b +ppTy' d (TEither a b) = ppParen (d > 6) $ ppTy' 7 a <> ppString " + " <> ppTy' 7 b +ppTy' d (TMaybe t) = ppParen (d > 10) $ ppString "Maybe " <> ppTy' 11 t +ppTy' d (TArr n t) = ppParen (d > 10) $ + ppString "Arr " <> ppString (show (fromNat n)) <> ppString " " <> ppTy' 11 t +ppTy' _ (TScal sty) = ppString $ case sty of + TI32 -> "i32" + TI64 -> "i64" + TF32 -> "f32" + TF64 -> "f64" + TBool -> "bool" +ppTy' d (TAccum t) = ppParen (d > 10) $ ppString "Accum " <> ppTy' 11 t ppString :: String -> Doc x ppString = fromString |