libcspm-0.1: src/CSPM/Compiler/Events.hs
{-# LANGUAGE TypeSynonymInstances #-}
module CSPM.Compiler.Events (
Event(..),
EventSet
) where
import qualified CSPM.Compiler.Map as M
import qualified CSPM.Compiler.Set as S
import Util.PrettyPrint
-- | Events, as represented in the LTS.
data Event =
-- | The internal special event tau.
Tau
-- | The internal event tick, representing termination.
| Tick
-- | Any event defined in a channel definition.
| UserEvent String
deriving (Eq, Ord)
instance PrettyPrintable Event where
prettyPrint Tau = char 'τ'
prettyPrint Tick = char '✓'
prettyPrint (UserEvent s) = text s
instance Show Event where
show ev = show (prettyPrint ev)
-- | An alias for ease
type EventSet = S.Set Event
type EventMap = M.Map Event Event
instance PrettyPrintable EventSet where
prettyPrint s = braces (list (map prettyPrint (S.toList s)))