def testSabeSePossuiRecursaoAEsquerdaDireta(self): self.assertTrue(construirGLCExpAritmeticaComRecEsquerdaDireta().possuiRecursaoAEsquerda())
def testDadaUmaGLCComRecursaoAEsquerdaDiretaPodeRetornarUmaGLCSemRecursaoAEsquerda(self): glc_nok = construirGLCExpAritmeticaComRecEsquerdaDireta() self.assertTrue(glc_nok.possuiRecursaoAEsquerda()) glc_nok = util.remover_recursao_esquerda_glc(glc_nok) self.assertFalse(glc_nok.possuiRecursaoAEsquerda())
def testSabeQuandoNaoDerivaEpsilon(self): self.assertEqual(set(), construirGLCExpAritmeticaComRecEsquerdaDireta().obterNaoTerminaisQueDerivamEpsilon()) self.assertEqual(set(), construirGLCComRecEsquerdaIndireta().obterNaoTerminaisQueDerivamEpsilon()) self.assertEqual(set(), construirGLCQueNaoProduzEpsilon().obterNaoTerminaisQueDerivamEpsilon())
def testDadaUmaGLCEpsilonLivreSeTransformarEmEpsilonLivreRetornaAMesmaGramatica(self): self.assertEqual(construirGLCComABOndeNumAsEhIgualNumBsEpsilonLivre(), util.transformar_em_epsilon_livre_glc(construirGLCComABOndeNumAsEhIgualNumBsEpsilonLivre())) self.assertEqual(construirGLCExpAritmeticaComRecEsquerdaDireta(), util.transformar_em_epsilon_livre_glc(construirGLCExpAritmeticaComRecEsquerdaDireta()))