import xml.dom.minidom as x dom = x.parse('b3.jff') zustdict = {} endzustaende = [] startzustand = None eingaben = set([]) transitions = [] for e in dom.getElementsByTagName('state'): attr = e.attributes.items() # print(attr) z = int(attr[0][1]) n = attr[1][1] zustdict.update({z:n}) for c in e.childNodes: if c.nodeName == 'final': endzustaende.append(z) if c.nodeName == 'initial': startzustand = z for e in dom.getElementsByTagName('transition'): for c in e.childNodes: if c.nodeName == 'from': v = int(c.childNodes[0].data) # f soll fuer Tabelle verwendet werden if c.nodeName == 'to': t = int(c.childNodes[0].data) if c.nodeName == 'read': r = c.childNodes[0].data eingaben.add(r) transitions.append((v,r,t)) zustaende = [] for i in range(len(zustdict)): zustaende.append(zustdict.get(i)) # sortiert nach id-Nummern zustaende.append('f') zustaende = tuple(zustaende) endzustaende = set(endzustaende) eingaben = list(eingaben) eingaben.sort() eingaben = tuple(eingaben) nz = len(zustaende) print('zustaende = '+str(zustaende)) print('anf = '+str(startzustand)) print('endz = '+str(endzustaende)) print('fehz = '+str(nz-1)) print('eingaben = '+str(eingaben)) print(transdict) # DEBUG f = [] for z in range(nz): zeile = [] for ein in range(len(eingaben)): m = set([]) for t in transitions: if (t[0] == z) and (t[1] == eingaben[ein]): m.add(t[2]) if len(m) == 0: m.add(nz-1) zeile.append(m) zeile = tuple(zeile) f.append(zeile) f = tuple(f) print('f = '+str(f))