Graphviz Dot Files
FSAs can be parsed from strings representing graphviz digraphs. For example:
dot = r"""
digraph {
rankdir = LR;
null [label = " ",shape = none,height = 0,width = 0];
{null rank = "min"};
node [shape = doublecircle]; C;
node [shape = circle];
null -> A;
A -> A [label = "0, 1"];
A -> B [label = "1"];
B -> C [label = "0, 1"];
}
"""
nfa = NFA.from_dot(dot)
Dot files can be parsed into FSMs provided they satisfy the following conditions:
Has one node with the name “null” with a single edge to the initial state this can be made to be invisible by prepending
null [label=" ",shape=none,height=0,width=0];to your graph. (optionally, add{null rank="min"};as well to force this edge to appear on the left)Final states have shape “doublecircle”
Multiple transitions using the same edge must separate alphabet symbols by commas.