Example #1
0
	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
Example #2
0
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
Example #3
0
    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