Data.FsmActions.ActionMatrix
Description
Serialisation/deserialisation of FSMs and
Actions as adjacency matrices.
An Action may be represented as an adjacency matrix of
0s and 1s. The rows and columns of the matrix correspond to states of
the Data.FA.Core.FSM: a 1 in a cell indicates that the
Action causes a transition from the 'row' state to
the 'column' state. If any of the rows in the matrix contain more
than one 1, the corresponding Action is a
nondeterministic: an Data.FsmActions.NAction.
- readFSMFromMxFiles :: Ord sy => [(sy, String)] -> IO (FSM sy)
- readAdjMxFromFile :: String -> IO Action
- readAdjMxFromString :: ByteString -> ReadMxMonad Action
Documentation
readFSMFromMxFiles :: Ord sy => [(sy, String)] -> IO (FSM sy)Source
Given a list of (symbol, path) pairs, compute an
FSM whose actions are read from matrices in each of
the paths using readAdjMxFromFile (and associated with their
corresponding symbols).
Note that if the same symbol appears multiple times, only one
instance will appear in the FSM; the choice of which
appears is not defined.
readFSMFromMxFiles :: Ord sy => [(sy, String)] -> IO (FSM sy)
readAdjMxFromFile :: String -> IO ActionSource
Read an action matrix from a specified file; uses
readAdjMxFromString to interpret the file contents.
readAdjMxFromString :: ByteString -> ReadMxMonad ActionSource
Given a bytestring we expect to contain a serialisation of an
adjacency matrix, compute the corresponding Action.
The serialisation format for an Action on an
n-state FSM is as follows: there are n
(newline-separated) lines, each containing n (comma-separated) 0s
or 1s. No other characters are allowed (not even whitespace), and
it is an error for any of the rows to contain anything other than
n cells. (Note that n is not specified, but inferred from the
number of lines in the string).