summaryrefslogtreecommitdiff
path: root/tools/dfagen/dfagen/output/dot.py
blob: ce9c4db8c028213719a5728eef1e117e09d77af4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import os.path

def write (prefix, automaton, user, outputdir):
    output = prefix + '.dot'
    o = open (os.path.join (outputdir, output), 'w')
    o.write ('digraph %s {' % prefix)
    for s in automaton.iter_states ():
        o.write (' %s\n' % s.name)
        for tr in s.iter_transitions ():
            for br in tr.iter_branches ():
                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 ()