Changeset 11231

Show
Ignore:
Timestamp:
07.01.2009 14:48:37 (10 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)

Location:
trunk/CspCASL
Files:
2 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} 
  • trunk/CspCASL/StatAnaCSP.hs

    r11224 r11231  
    2929import CASL.Overload (minExpFORMULA, oneExpTerm) 
    3030import CASL.Sign 
    31 import CASL.Morphism (RawSymbol) 
    3231import CASL.StaticAna (allOpIds, allPredIds) 
    3332import Common.AS_Annotation 
     
    4544import CspCASL.Print_CspCASL () 
    4645import CspCASL.SignCSP 
     46import CspCASL.Morphism(makeChannelNameSymbol, makeProcNameSymbol) 
    4747 
    4848import qualified Data.Set as Set 
     
    121121              return m 
    122122      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. 
    124129             Just e -> 
    125130               if e == s 
     
    160165                alpha <- Monad.foldM (anaCommType sig) S.empty commTypes 
    161166                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) 
    162171                return (Map.insert name profile oldProcDecls) 
    163172    vds <- gets envDiags