Changeset 11231
- Timestamp:
- 07.01.2009 14:48:37 (10 months ago)
- Location:
- trunk/CspCASL
- Files:
-
- 2 modified
-
Morphism.hs (modified) (2 diffs)
-
StatAnaCSP.hs (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/CspCASL/Morphism.hs
r11220 r11231 12 12 -} 13 13 14 module CspCASL.Morphism where 14 module CspCASL.Morphism ( symOf, 15 makeChannelNameSymbol, 16 makeProcNameSymbol 17 ) where 15 18 16 19 import CASL.Sign 17 import CASL.Morphism as CASL_Morphism20 import qualified CASL.Morphism as CASL_Morphism 18 21 import Common.Id(simpleIdToId) 22 import CspCASL.AS_CspCASL_Process (CHANNEL_NAME, PROCESS_NAME) 19 23 import CspCASL.SignCSP 20 24 21 25 import qualified Data.Map as Map 22 26 import qualified Data.Set as Set 27 28 channelNameSymbType :: SymbType 29 channelNameSymbType = OtherTypeKind "CHANNEL_KIND" 30 31 processNameSymbType :: SymbType 32 processNameSymbType = OtherTypeKind "PROC_NAME_KIND" 23 33 24 34 -- | Calculate the set of symbols for a CspCASL signature … … 29 39 chanNames = Set.fromList $ Map.keys (chans cspExt) -- Get the channel names 30 40 procNames = Set.fromList $ Map.keys (procSet cspExt) -- Get the process names 31 mkChanSymbol c = Symbol {32 symName = simpleIdToId c,33 symbType = OtherTypeKind "CHANNEL_KIND"34 }35 mkProcNameSymbol p = Symbol {36 symName = simpleIdToId p,37 symbType = OtherTypeKind "PROC_NAME_KIND"38 }39 41 -- Make channel symbols from names 40 chan Symbols = Set.map mkChanSymbol chanNames42 chanNameSymbols = Set.map makeChannelNameSymbol chanNames 41 43 -- Make process name symbols from names 42 procNameSymbols = Set.map mkProcNameSymbol procNames 43 in Set.unions [caslSymbols, chanSymbols, procNameSymbols] 44 procNameSymbols = Set.map makeProcNameSymbol procNames 45 in Set.unions [caslSymbols, chanNameSymbols, procNameSymbols] 46 47 makeChannelNameSymbol :: CHANNEL_NAME -> Symbol 48 makeChannelNameSymbol c = 49 Symbol {symName = simpleIdToId c, symbType = channelNameSymbType} 50 51 makeProcNameSymbol :: PROCESS_NAME -> Symbol 52 makeProcNameSymbol p = 53 Symbol {symName = simpleIdToId p, symbType = processNameSymbType} -
trunk/CspCASL/StatAnaCSP.hs
r11224 r11231 29 29 import CASL.Overload (minExpFORMULA, oneExpTerm) 30 30 import CASL.Sign 31 import CASL.Morphism (RawSymbol)32 31 import CASL.StaticAna (allOpIds, allPredIds) 33 32 import Common.AS_Annotation … … 45 44 import CspCASL.Print_CspCASL () 46 45 import CspCASL.SignCSP 46 import CspCASL.Morphism(makeChannelNameSymbol, makeProcNameSymbol) 47 47 48 48 import qualified Data.Set as Set … … 121 121 return m 122 122 else case Map.lookup chanName m of 123 Nothing -> return (Map.insert chanName s m) -- insert new. 123 Nothing -> 124 -- Add the channel name as a symbol to the list of 125 -- newly defined symbols - which is stored in the CASL 126 -- signature 127 do addSymbol (makeChannelNameSymbol chanName) 128 return (Map.insert chanName s m) -- insert new. 124 129 Just e -> 125 130 if e == s … … 160 165 alpha <- Monad.foldM (anaCommType sig) S.empty commTypes 161 166 let profile = (ProcProfile argSorts alpha) 167 -- Add the process name as a symbol to the list of 168 -- newly defined symbols - which is stored in the CASL 169 -- signature 170 addSymbol (makeProcNameSymbol name) 162 171 return (Map.insert name profile oldProcDecls) 163 172 vds <- gets envDiags