{- |
Module : ./COL/Print_AS.hs
Description : Pretty printing for COL
Copyright : (c) Wiebke Herding, C. Maeder, Uni Bremen 2004-2006
License : GPLv2 or higher, see LICENSE.txt
Maintainer : till@informatik.uni-bremen.de
Stability : provisional
Portability : portable
pretty printing
-}
module COL.Print_AS where
import qualified Data.Set as Set
import qualified Data.Map as Map
import Common.Doc
import Common.DocUtils
import CASL.ToDoc
import COL.AS_COL
import COL.COLSign
instance Pretty COL_SIG_ITEM where
pretty = printCOL_SIG_ITEM
printCOL_SIG_ITEM :: COL_SIG_ITEM -> Doc
printCOL_SIG_ITEM csi = case csi of
Constructor_items ls _ -> keyword (constructorS ++ pluralS ls) <+>
semiAnnos idDoc ls
Observer_items ls _ -> keyword observerS <+>
semiAnnos (printPair idDoc (printMaybe pretty)) ls
instance Pretty COLSign where
pretty = printCOLSign
printCOLSign :: COLSign -> Doc
printCOLSign s = keyword constructorS <+>
fsep (punctuate semi $ map idDoc (Set.toList $ constructors s))
$+$ keyword observerS <+>
fsep (punctuate semi $
map (printPair idDoc pretty) (Map.toList $ observers s))