Symbol.hs revision 2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4
b95c5b557aadc2211867af804d39950d4c9c1444Andy GimblettModule : $Header$
b95c5b557aadc2211867af804d39950d4c9c1444Andy GimblettDescription : semantic csp-casl symbols
b95c5b557aadc2211867af804d39950d4c9c1444Andy GimblettCopyright : (c) Christian Maeder, DFKI GmbH 2011
b95c5b557aadc2211867af804d39950d4c9c1444Andy GimblettLicense : GPLv2 or higher, see LICENSE.txt
b95c5b557aadc2211867af804d39950d4c9c1444Andy GimblettMaintainer : Christian.Maeder@dfki.de
b95c5b557aadc2211867af804d39950d4c9c1444Andy GimblettStability : provisional
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy GimblettPortability : portable
d64c27888613a81c9634cd939dd05618175465efAndy Gimblettimport qualified Common.Lib.MapSet as MapSet
b95c5b557aadc2211867af804d39950d4c9c1444Andy Gimblettimport qualified Data.Map as Map
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblettimport qualified Data.Set as Set
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblettdata CspSymbType
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblett = CaslSymbType SymbType
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblett | ProcAsItemType ProcProfile
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblett | ChanAsItemType Id -- the SORT
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblett deriving (Show, Eq, Ord)
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblettdata CspSymbol = CspSymbol {cspSymName :: Id, cspSymbType :: CspSymbType}
b95c5b557aadc2211867af804d39950d4c9c1444Andy Gimblett deriving (Show, Eq, Ord)
1ac35b084d7e57853f66169d2ca5532977fc403aJens Elknerdata CspRawSymbol = ACspSymbol CspSymbol | CspKindedSymb CspSymbKind Id
c4b2418421546a337f83332fe0db04742dcd735dAndy Gimblett deriving (Show, Eq, Ord)
1ac35b084d7e57853f66169d2ca5532977fc403aJens ElknerrawId :: CspRawSymbol -> Id
c01168f53431b6ad785bf8a8b12bd3a60b93b9b4Andy GimblettrawId r = case r of
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblett ACspSymbol s -> cspSymName s
adce8375991a372444ab995895442dca6faf9677Andy Gimblett CspKindedSymb _ i -> i
29ac9ecacf0983a565b89f133ff2bdf2ac02b0c4Andy Gimblettinstance Pretty CspSymbol where
afc52bfaabee38c4d55cee9f35b1a0028ba3854aAndy Gimblett pretty (CspSymbol i t) = case t of
sortToProcProfile = ProcProfile [] . Set.singleton . CommTypeSort
getSet = MapSet.lookup idt
let hasChan = Set.member s chs
cprs = Set.filter (\ (ProcProfile args al) ->
|| Set.member s (subsortsOf r sig)
c == s) (Set.toList al)) prs
in case Set.toList cprs of
-> Result (Map.Map CspRawSymbol CspRawSymbol)
Map.empty (concat ls)
toSymbolSet :: CspSign -> [Set.Set CspSymbol]
toSymbolSet csig = map Set.fromList
symSets :: CspCASLSign -> [Set.Set CspSymbol]
symSets sig = map (Set.map caslToCspSymbol) (symOf sig)
splitSymbolMap :: Map.Map CspRawSymbol CspRawSymbol
-> (RawSymbolMap, Map.Map CspRawSymbol CspRawSymbol)
splitSymbolMap = Map.foldWithKey (\ s t (cm, ccm) ->
(Just c, Just d) -> (Map.insert c d cm, ccm)