def clicouTransformarEmAFD(self):
        try:
            exp = ExpressaoRegular(str(self.__ui.exp_reg.text()))
            afd = exp.obterAFD()
            afd = util.remover_estados_mortos_afd(afd)
            self.__janela_principal.obterAFGUI().setarAF(afd)

        except Exception as excecao:
            self._error.showMessage(str(excecao))
    def testRobustezDaTransformacaoDaEREmAFD(self):
        automato = construirAFDComABOndeAsEhPar()
        exp_reg = ExpressaoRegular("(b*ab*a)*b*")
        afd_exp = exp_reg.obterAFD()
        self.assertTrue(util.sao_equivalentes_af(automato, afd_exp))

        automato = construirAFDComABOndeBsEhImpar()
        exp_reg = ExpressaoRegular("a*ba* (a*ba*ba*)*")
        afd_exp = exp_reg.obterAFD()
        self.assertTrue(util.sao_equivalentes_af(automato, afd_exp))
    def clicouTestarEquivalencia(self):
        try:
            exp1 = ExpressaoRegular(str(self.__ui.exp_reg1.text()))
            exp2 = ExpressaoRegular(str(self.__ui.exp_reg2.text()))
            if util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()):
                self.__ui.sao_equivalentes.setText("OK")
            else:
                self.__ui.sao_equivalentes.setText("NOK")

        except Exception as excecao:
            self._error.showMessage(str(excecao))
    def testSabeQualEhOSeuAFDMinimoCorrespondente(self):
        estados = set()
        estados.add(Estado("q0", set([Transicao("a", "q1")]), True, False))
        estados.add(Estado("q1", set([Transicao("b", "q1"), Transicao("c", "q2")]), False, False))
        estados.add(Estado("q2", set(), False, True))
        alfabeto = set(["a", "b", "c"])

        automato_a_bEstrela_c = AutomatoFinito(alfabeto, estados)
        exp_reg = ExpressaoRegular("ab*c")
        afd_exp = exp_reg.obterAFD()
        self.assertTrue(util.sao_equivalentes_af(automato_a_bEstrela_c, afd_exp))
        self.assertTrue(afd_exp.ehDeterministico())
        self.assertTrue(afd_exp.ehMinimo())
    def testModificacoesQueAlteramLinguagem(self):
        exp1 = ExpressaoRegular("a?a?a?")
        exp2 = ExpressaoRegular("a?")
        self.assertFalse(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))

        exp1 = ExpressaoRegular("a.b")
        exp2 = ExpressaoRegular("b.a")
        self.assertFalse(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))
    def testModificacoesQueNaoAlteramLinguagem(self):
        exp1 = ExpressaoRegular("a*a*a*")
        exp2 = ExpressaoRegular("a*")
        self.assertTrue(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))

        exp1 = ExpressaoRegular("a|b")
        exp2 = ExpressaoRegular("b|a")
        self.assertTrue(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))
 def testDefineEscopoDosParentesisCorretamente(self):
     exp1 = ExpressaoRegular("(a) | (b)")
     exp2 = ExpressaoRegular("a|b")
     self.assertTrue(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))
 def testNaoImportaAQuantidadeDeParentesis(self):
     exp1 = ExpressaoRegular("((( a* b((ab))* b )))")
     exp2 = ExpressaoRegular(" a* b(ab)* b ")
     self.assertTrue(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))
 def testReconheceOOperadorFechamentoPosito(self):
     exp1 = ExpressaoRegular("a+")
     exp2 = ExpressaoRegular("aa*")
     self.assertTrue(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))
 def testReconheceOOperadorInterrogacao(self):
     exp1 = ExpressaoRegular("a?")
     exp2 = ExpressaoRegular("a|" + EPSILON)
     self.assertTrue(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))
 def testReconheceOEpsilonComoCaracterEspecialEGeraUmAutomatoMinimoQueGeraEpsilon(self):
     exp = ExpressaoRegular(EPSILON)
     self.assertTrue(util.sao_equivalentes_af(exp.obterAFD(), construirAFDQueGeraEpsilon()))
 def testExpressaoRegPodeEstarTodaEmglobadaEmParenteses(self):
     exp1 = ExpressaoRegular("( a* b(ab)* b )")
     exp2 = ExpressaoRegular(" a* b(ab)* b ")
     self.assertTrue(util.sao_equivalentes_af(exp1.obterAFD(), exp2.obterAFD()))
示例#13
0
 def testPodeSalvarECarregarUmaExpressaoRegularDoDisco(self):
   exp = ExpressaoRegular('a*b?.(ab)')
   util.salvar(exp, os.path.join(os.getcwd(), 'teste.exp'))
   exp2 = util.carregar(os.path.join(os.getcwd(), 'teste.exp'))
   self.assertTrue(util.sao_equivalentes_af(exp.obterAFD(), exp2.obterAFD()))