FSMPrint.mesa
Don Curry January 25, 1989 9:20:24 am PST
A bit of unfinished code.
DIRECTORY
FSM, IO, RefTab, TerminalIO;
FSMPrint:
CEDAR
PROGRAM
IMPORTS IO, RefTab, TerminalIO
PrintFSM:
PROC[fsm:
FSM.FSMData] = {
visited: RefTab.Ref ← RefTab.Create[];
PrintState[fsm.initialState, 0, RefTab.Create[]]};
PrintState:
PROC[state:
FSM.State, level:
INT, visited: RefTab.Ref] = {
FOR i: INT IN [0..level) DO TerminalIO.PutRope[" "] ENDLOOP;
TerminalIO.PutF["%g\n", IO.rope[state.name]];
IF RefTab.Store[visited, state, state]
THEN {
FOR trans:
FSM.Transitions ← state.outTrans, trans.rest
WHILE trans#
NIL
DO
PrintState[trans.first.target, level+1, visited] ENDLOOP} };
END.