def testDadoUmaProducaoQueNaoEhDaGramaticaRetornaNoneAoTentarObterTerminaisDoBeta(self): vn = set(['S', 'V']) vt = set(['a', 'b', 'c']) s = 'S' producoes = set() producoes.add(Producao('S', 'a S V b')) producoes.add(Producao('S', EPSILON)) glc1 = Gramatica(producoes, vn,vt,s) self.assertEqual(None, glc1.obterTerminaisDoBeta(Producao('S', 'S V b')))
def testDadoUmaProducaoDaGramaticaSabeInformarQuaisSaoOsTerminaisExistentesNoBeta(self): vn = set(['S', 'V']) vt = set(['a', 'b', 'c']) s = 'S' producoes = set() producoes.add(Producao('S', 'a S V b')) producoes.add(Producao('S', EPSILON)) glc1 = Gramatica(producoes, vn,vt,s) self.assertEqual(set(['a','b']), glc1.obterTerminaisDoBeta(Producao('S', 'a S V b')))
def testDadoUmaProducaoDaGramaticaSeNaoPossuiTerminaisNoBetaRetornaVazioAoTentarObtelos(self): vn = set(['S', 'V']) vt = set(['a', 'b', 'c']) s = 'S' producoes = set() producoes.add(Producao('S', 'S V')) producoes.add(Producao('S', EPSILON)) glc1 = Gramatica(producoes, vn,vt,s) self.assertEqual(set(), glc1.obterTerminaisDoBeta(Producao('S', 'S V')))
def testCriaUmaCopiaDoConjuntoDeProducoesInformados(self): vn = set(['S', 'V']) vt = set(['a', 'b', 'c']) s = 'S' producoes = set() producoes.add(Producao('S', 'V')) producoes.add(Producao('V', 'b c S a')) g1 = Gramatica(producoes, vn,vt,s) self.assertEqual(producoes, g1.obterProducoes()) producoes.pop() self.assertNotEqual(producoes, g1.obterProducoes())
def __init__(self, producoes, nao_terminais, terminais, simbolo_inicial): ''' Construtor @param producoes: conjunto de producoes da gramatica. @param nao_terminais: conjunto de nao terminais (Vn). @param terminais: conjunto de terminais (Vt). @param simbolo_inicial: simbolo inicial da gramatica (S). ''' Gramatica.__init__(self, producoes, nao_terminais, terminais, simbolo_inicial) self.__verifica_alpha() self.__calculaFirst() self.__calculaFollow()
def testDadoUmAlphaQueNaoExisteNaGramaticaSeTentarObterProducoesRetornaConjuntoVazio(self): vn = set(['S', 'V']) vt = set(['a', 'b', 'c']) s = 'S' producoes_s = set([Producao('S', 'a V'), Producao('S', 'b')]) producoes_v = set([Producao('V', 'a S'), Producao('V', 'c')]) producoes = set() producoes.update(producoes_s) producoes.update(producoes_v) gramatica = Gramatica(producoes, vn,vt,s) self.assertEqual(set(), gramatica.obterProducoesDoAlpha('T'))
def testDadoUmAlphaSabeQuaisSaoAsProducoesDesseNaoTerminalIndependenteDeQuantosEspacos(self): vn = set(['S', 'V']) vt = set(['a', 'b', 'c']) s = 'S' producoes_s = set([Producao('S', 'a V'), Producao('S', 'b')]) producoes_bv = set([Producao('b V', 'a S'), Producao('b V', 'c')]) producoes = set() producoes.update(producoes_s) producoes.update(producoes_bv) gramatica = Gramatica(producoes, vn,vt,s) self.assertEqual(producoes_s, gramatica.obterProducoesDoAlpha('S')) self.assertEqual(producoes_bv, gramatica.obterProducoesDoAlpha('b V'))
t7 = Token("IDENTACAO", r"\s", True) lex.addTolken(t0) lex.addTolken(t1) lex.addTolken(t2) lex.addTolken(t3) lex.addTolken(t4) lex.addTolken(t5) lex.addTolken(t6) lex.addTolken(t7) #imprime o resultado lex.tLexemas.imprimir() #Recebe o arquivo contendo a gramática gramatica = Gramatica() gramatica.extrairDeArquivo("arquivos/GramaticaSeparada2.txt") #Recebe o arquivo contendo a tabela para a análise sintática tabelaSint = TabelaSintatica() tabelaSint.gerarTabelaArq("arquivos/tabelaGramatica3_2.csv") #Criando o analisador sintático anaSintatico = AnalisadorSintatico(gramatica) anaSintatico.tabelaSintatica = tabelaSint #TESTANDO lex.analiseLexica(""" def somar(a,b){ s = a + b return s