{-# OPTIONS_GHC -Wall #-}
-------------------------------------------------------------------------------
{- |
Module : Language.R.Pretty
Description : Pretty-printer of the expression representatation.
Copyright : (c) Paulo Silva
License : LGPL
Maintainer : paufil@di.uminho.pt
Stability : experimental
Portability : portable
-}
-------------------------------------------------------------------------------
module Language.R.Pretty (
showR
) where
import {-# SOURCE #-} Language.R.Syntax
import Language.Type.Pretty
-------------------------------------------------------------------------------
showR :: R r -> ShowS
showR BOT = showString "BOT"
showR TOP = showString "TOP"
showR (NEG r) =
parens $
showString "NEG " .
showR r
showR (MEET r s) =
parens $
showString "MEET " .
showR r .
space .
showR s
showR (JOIN r s) =
parens $
showString "JOIN " .
showR r .
space .
showR s
showR ID = showString "ID"
showR (CONV r) =
parens $
showString "CONV " .
showR r
showR (COMP _ r s) =
parens $
showString "COMP " .
showR r .
space .
showR s
showR (SPLIT r s) =
parens $
showString "SPLIT " .
showR r .
space .
showR s
showR (ORD o) =
parens $ showString "ORD " . showR o
showR (FUN f) =
parens $ showString "FUN " . showR f
showR (LEFTSEC _ f s) =
parens $
showString "LEFTSEC " .
showR f .
space .
showR s
showR (RIGHTSEC _ f s) =
parens $
showString "RIGHTSEC " .
showR f .
space .
showR s
showR (APPLY _ r v) =
parens $
showString "APPLY " .
showR r .
space .
showR v
showR (DEF nm t) =
parens $
showString "DEF " .
showString nm .
space .
showType t
showR (Var nm) = parens $ showString "Var " . showString nm
showR (PROD r s) =
parens $
showString "PROD " .
showR r .
space .
showR s
showR (EITHER r s) =
parens $
showString "EITHER " .
showR r .
space .
showR s
showR (MAYBE r) =
parens $
showString "MAYBE " .
showR r
showR (LIST r) =
parens $
showString "LIST " .
showR r
showR (SET r) =
parens $
showString "SET " .
showR r
showR (MAP r) =
parens $
showString "MAP " .
showR r
showR FId = showString "FId"
showR (FComp _ f g) =
parens $
showString "FComp " .
showR f .
space .
showR g
showR OId = showString "OId"
showR (OComp o1 o2) =
parens $
showString "OComp " .
showR o1 .
space .
showR o2
showR (OConv o) =
parens $
showString "OConv " .
showR o
showR (OProd o) =
parens $
showString "OProd " .
showR o
showR (OJoin o) =
parens $
showString "OJoin " .
showR o
showR (OMeet o) =
parens $
showString "OMeet " .
showR o
showR (OMax o) =
parens $
showString "OMax " .
showR o
showR (OMin o) =
parens $
showString "OMin " .
showR o
showR (GDef nm f g fo go) =
parens $
showString "GDef " .
showString nm . space .
showR f . space . showR g . space .
showR fo . space . showR go
showR GId = showString "GId"
showR (GComp _ g1 g2) =
parens $
showString "GComp " .
showR g1 .
space .
showR g2
showR (GConv g) =
parens $
showString "GConv " .
showR g
showR (GLAdj g) =
parens $
showString "GLAdj " .
showR g
showR (GUAdj g) =
parens $
showString "GUAdj " .
showR g
showR (GLOrd _ g) =
parens $
showString "GLOrd " .
showR g
showR (GUOrd _ g) =
parens $
showString "GUOrd " .
showR g
-------------------------------------------------------------------------------
parens :: ShowS -> String -> String
parens = showParen True
-------------------------------------------------------------------------------
space :: ShowS
space = showChar ' '
-------------------------------------------------------------------------------
|