summaryrefslogtreecommitdiff
path: root/tools/dfagen/dfagen/output/dot.py
blob: d6cc057cff0a9e13d9d80b1d180165f9ec3b69d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def write (prefix, automaton, user):
    output = prefix + '.dot'
    o = open (output, 'w')
    o.write ('digraph %s {' % prefix)
    for s in automaton.states.values ():
        o.write (' %s\n' % s.name)
        for tr in s.transitions.values ():
            for br in tr.branches.values ():
                o.write (' %(state)s -> %(to)s [ label = "%(event)s" ];\n'
                        % dict (
                            state = s.name,
                            event = tr.event.name
                            + (br.name and ': ' + br.name or ''),
                            to = (br.to and br.to.name or s.name),
                            )
                        )
    o.write ('}\n')
    o.close ()