summaryrefslogtreecommitdiff
path: root/tools/dfagen/dfagen/output/dot.py
blob: be346b10a9bc91b302a8025e9f77a284aeaba3bf (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 ()