def automatoSimples(simbolo, tag): automato = Automato(tag) #Cria um novo automato eInicial = Estado(True, False) #Cria um estado inicial eFinal = Estado(False, True) #Cria um estado final #Adiciona os estados no automato automato.addEstado(eInicial) automato.addEstado(eFinal) automato.addEstadoInicial(eInicial) automato.addEstadoFinal(eFinal) transicao = Transicao( eInicial, eFinal, simbolo) #Cria uma transicao entre o estado final e inicial eInicial.addTransicao( transicao ) #Adiciona a transicao na lista de transicoes do estado inicial automato.atualizaIds() return automato
def uniaoE(a1, a2, tag): novoAutomato = Automato(tag) #Cria um novo automato #Adicionando todos os estados dos automatos antigos no novo estados1 = a1.getEstados() estados2 = a2.getEstados() for estado in estados1: novoAutomato.addEstado(estado) for estado in estados2: novoAutomato.addEstado(estado) #Adicionando todos os estados iniciais de a1 como estados iniciais do novo automato for estado in a1.getEstadosIniciais(): novoAutomato.addEstadoInicial(estado) #Fazendo todos os estados finais de a1 apontarem para os estados iniciais de a2 for estadoFinal in a1.getEstadosFinais(): estadoFinal.setFinal(False) for estadoInicial in a2.getEstadosIniciais(): estadoInicial.setInicial(False) t = Transicao(estadoFinal, estadoInicial, '') estadoFinal.addTransicao(t) #Adicionando todos os estados finais de a2 na lista de estados finais do novo automato for estadoFinal in a2.getEstadosFinais(): novoAutomato.addEstadoFinal(estadoFinal) novoAutomato.atualizaIds() return novoAutomato
def uniaoOu(a1, a2, tag): novoAutomato = Automato(tag) #Cria um novo automato #Adicionando todos os estados dos automatos antigos no novo estados1 = a1.getEstados() estados2 = a2.getEstados() for estado in estados1: novoAutomato.addEstado(estado) for estado in estados2: novoAutomato.addEstado(estado) #Criando novos estados novoInicial = Estado(True, False) novoFinal = Estado(False, True) novoAutomato.addEstado(novoInicial) novoAutomato.addEstado(novoFinal) novoAutomato.addEstadoInicial(novoInicial) novoAutomato.addEstadoFinal(novoFinal) #Criando novas transicoes para os estados iniciais iniciais1 = a1.getEstadosIniciais() iniciais2 = a2.getEstadosIniciais() for estado in iniciais1: t = Transicao(novoInicial, estado, '') novoInicial.addTransicao(t) estado.setInicial(False) for estado in iniciais2: t = Transicao(novoInicial, estado, '') novoInicial.addTransicao(t) estado.setInicial(False) #Criando novas transicoes para os estados finais finais1 = a1.getEstadosFinais() finais2 = a2.getEstadosFinais() for estado in finais1: t = Transicao(estado, novoFinal, '') estado.addTransicao(t) estado.setFinal(False) for estado in finais2: t = Transicao(estado, novoFinal, '') estado.addTransicao(t) estado.setFinal(False) novoAutomato.atualizaIds() return novoAutomato