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'))
Exemple #8
0
    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