Show
Ignore:
Timestamp:
07.01.2009 14:48:37 (11 months ago)
Author:
csliam
Message:

Static analysis of CspCASL now adds channel names and process names to the collected symbols (stored in the CASL signature)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/CspCASL/Morphism.hs

    r11220 r11231  
    1212-} 
    1313 
    14 module CspCASL.Morphism where 
     14module CspCASL.Morphism ( symOf, 
     15                          makeChannelNameSymbol, 
     16                          makeProcNameSymbol 
     17                        ) where 
    1518 
    1619import CASL.Sign 
    17 import CASL.Morphism as CASL_Morphism 
     20import qualified CASL.Morphism as CASL_Morphism 
    1821import Common.Id(simpleIdToId) 
     22import CspCASL.AS_CspCASL_Process (CHANNEL_NAME, PROCESS_NAME) 
    1923import CspCASL.SignCSP 
    2024 
    2125import qualified Data.Map as Map 
    2226import qualified Data.Set as Set 
     27 
     28channelNameSymbType :: SymbType 
     29channelNameSymbType = OtherTypeKind "CHANNEL_KIND" 
     30 
     31processNameSymbType :: SymbType 
     32processNameSymbType = OtherTypeKind "PROC_NAME_KIND" 
    2333 
    2434-- | Calculate the set of symbols for a CspCASL signature 
     
    2939        chanNames = Set.fromList $ Map.keys (chans cspExt) -- Get the channel names 
    3040        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                              } 
    3941        -- Make channel symbols from names 
    40         chanSymbols = Set.map mkChanSymbol chanNames 
     42        chanNameSymbols = Set.map makeChannelNameSymbol chanNames 
    4143        -- 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 
     47makeChannelNameSymbol :: CHANNEL_NAME -> Symbol 
     48makeChannelNameSymbol c = 
     49    Symbol {symName = simpleIdToId c, symbType = channelNameSymbType} 
     50 
     51makeProcNameSymbol :: PROCESS_NAME -> Symbol 
     52makeProcNameSymbol p = 
     53    Symbol {symName = simpleIdToId p, symbType = processNameSymbType}