fsmActions-0.4.1: Finite state machines and FSM actionsSource codeContentsIndex
Data.FsmActions.WellFormed
Description
Well-formedness checks for finite state machines.
Synopsis
data WellFormed sy
= BadLengths [(sy, Int)]
| BadActions [(sy, Action)]
| Disconnected [[State]]
| WellFormed
isWellFormed :: Ord sy => FSM sy -> WellFormed sy
polishFSM :: (Ord sy, Show sy) => FSM sy -> ReadFsmMonad (FSM sy)
Documentation
data WellFormed sy Source
An FSM is well-formed if all its actions are the same length, none of its actions contain destinations which are out of range, and it is not disjoint.
Constructors
BadLengths [(sy, Int)]Lengths of Actions in the FSM don't all match. Carries a sorted list of (symbol, Action length) pairs, one for every symbol in the alphabet of the FSM.
BadActions [(sy, Action)]Some Actions contain out-of-range (negative or too-high) destinations. Carries a sorted list of all such actions and their corresponding symbols.
Disconnected [[State]]The FSM is disconnected, i.e. not even weakly-connected. Carries a list of its weakly-connected components (each is a list of States).
WellFormedWell-formed.
show/hide Instances
Eq sy => Eq (WellFormed sy)
Show sy => Show (WellFormed sy)
isWellFormed :: Ord sy => FSM sy -> WellFormed sySource
Check if an FSM is well-formed or not.
polishFSM :: (Ord sy, Show sy) => FSM sy -> ReadFsmMonad (FSM sy)Source

Given an FSM, normalise it and check it's well-formed.

This should be called whenever an FSM is read/computed from an outside source. If parsing, the right time to call this is immediately after you've decided if the parse of the FSM was successful or not. (In other words, here are some static checks!)

Produced by Haddock version 2.6.0