{- ************************************************************** * Filename : AutomatonTypes.hs * * Author : Markus Forsberg * * d97forma@dtek.chalmers.se * * Last Modified : 6 July, 2001 * * Lines : 71 * ************************************************************** -} module FST.AutomatonTypes ( State, -- State. FirstState, -- the first state. LastState, -- the last state. InitialStates, -- the initial states. FinalStates, -- set of final states. Transitions, -- set of transitions. TransitionTable, -- table of transitions. Sigma, -- the alphabet of an automaton. AutomatonFunctions, -- Type class of automaton -- functions. states, -- get the states of an automaton. isFinal, -- is the given state a final state? initials, -- get the initial states of an automaton. finals, -- get the final states of an automaton. transitionTable, -- get the transitionTable. transitionList, -- get the transitions w.r.t. a state. transitions, -- get the transitions -- w.r.t. a state and a symbol. firstState, lastState, -- get the maximum state of a automaton. alphabet -- get the alphabet of an automaton. ) where -- Types for Automaton type State = Int type FirstState = Int type LastState = Int type InitialStates = [State] type FinalStates = [State] type Transitions a = [(a,State)] type TransitionTable a = [(State,Transitions a)] type Sigma a = [a] -- | Class of AutomatonFunctions class AutomatonFunctions f where states :: f a -> [State] isFinal :: f a -> State -> Bool finals :: f a -> FinalStates initials :: f a -> InitialStates transitionList :: f a -> State -> Transitions a transitionTable :: f a -> TransitionTable a transitions :: Eq a => f a -> (State, a) -> [State] firstState :: Eq a => f a -> State lastState :: Eq a => f a -> State alphabet :: f a -> Sigma a