def toDFA(self): newStates = [] initialState = self.getInitialState() newStates.append( '|'.join( list( map(lambda x: x.label, self.clausura(initialState) ) ) ) ) alphabet = self.alphabet.split(',') stableTable = [] x = 0 for state in newStates: stableTable.append([None]*len(alphabet)) y = 0 for a in alphabet: stateTo = getStateTo(self, state, a) if(stateTo): stableTable[x][y] = stateTo newStates.append(stateTo) y = y+1 x = x+1 newDFA = DFA(self.name+"-toDFA", alphabet) newDFA.addState(normalizeState(newStates[0]), True) for i in range(1, len(newStates)): newDFA.addState(normalizeState(newStates[i]), False, lookForFinal(self, newStates[i])) for i in range( len(newStates) ): for j in range( len(stableTable[i]) ): if(stableTable[i][j]): newDFA.addTransition(alphabet[j], normalizeState(newStates[i]), normalizeState( stableTable[i][j]) ) return newDFA
def createDFA(): newDFA = DFA("newDFA", alphabet) print("nodes addState") for node in nodeList: newDFA.addState(str(node.label.text()), node.first, node.final) for con in conList: newDFA.addTransition(str(con.name), str(con.node.label.text()), str(con.nextNode.label.text())) return newDFA
def toDFA(self): newStates = [] initialState = self.getInitialState() newStates.append(initialState.label) alphabet = self.alphabet.split(',') stateTable = [] x = 0 stateTmp = '' for state in newStates: stateTable.append([None] * len(alphabet)) y = 0 for a in alphabet: print("ALPHAB ", a, " state ", state, " -- ", stateTmp) if stateTmp != state: stateTo = getStateTo(self, state, a) if stateTo: print("YES") stateTmp = state stateTable[x][y] = stateTo newStates.append(stateTo) y = y + 1 x = x + 1 newDFA = DFA(self.name + "-toDFA", alphabet) newDFA.addState(normalizeState(newStates[0]), True) for i in range(1, len(newStates)): newDFA.addState(normalizeState(newStates[i]), False, lookForFinal(self, newStates[i])) for i in range(len(stateTable)): for j in range(len(stateTable[i])): if (stateTable[i][j]): newDFA.addTransition(alphabet[j], normalizeState(newStates[i]), normalizeState(stateTable[i][j])) return newDFA