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 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