DIRECTORY FSM, IO, RefTab, TerminalIO; FSMPrint: CEDAR PROGRAM IMPORTS IO, RefTab, TerminalIO ~ BEGIN 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. XFSMPrint.mesa Don Curry January 25, 1989 9:20:24 am PST A bit of unfinished code. Ę ˜šœ ™ Jšœ)™)—J˜Jšœ™J˜šĎk ˜ Jšœœ˜J˜—šœ œ˜Jšœœ˜—šœ˜J˜—šĎnœœœ ˜$J˜&J˜2—J˜šž œœœœ˜GJš œœœ œœ˜=Jšœœ˜-šœ%œ˜-š œœ*œœ˜JJšœ1œ˜<———J˜Jšœ˜—…—\˝