def inicia(self): case = 0 lex = Lex() # # 1 ER PALAVRAS RESERVADAS a1 = lex.lexer('reservado', case) dict = a1.getDictAutomato() case += len(dict) # # 2 ER IDENTIFICADORES a2 = lex.lexer('identificadores', case) # # 3 GRAMATICA DE SESPECIAL terminais = ['+', '-', '=', '/', '*', '>', '<', '!'] nTerminais = ['S'] producoes = {'S': ['+', '-', '=', '/', '*', '>', '<', '!']} inicial = 'S' g = Grammar(producoes,terminais, nTerminais, inicial) s, i, f = g.convertGtoAF() a3 = Automato(s, i, f) a3.determina() a3.printAtomato() print("\n") dict = a2.getDictAutomato() case += len(dict) a3 = lex.renameState(a3, case) # # 4 GRAMATICA SEPARADORES terminais2 = [':',';', ' ', '(', ')', '[', ']', ',', '\n'] nTerminais2 = ['S'] producoes2 = {'S': [':',';', ' ', '(', ')', '[', ']', ',', '\n']} inicial2 = 'S' g = Grammar(producoes2,terminais2, nTerminais2, inicial2) s2, i2, f2 = g.convertGtoAF() a4 = Automato(s2, i2, f2) a4.determina() a4.printAtomato() print("\n") dict = a3.getDictAutomato() case += len(dict) a4 = lex.renameState(a4, case) # ER CONSTANTES dict = a4.getDictAutomato() case += len(dict) a5 = lex.lexer('constantes', case) r = a5 r = a1.oU([a2, a3, a4, a5]) print ("\n") r.determina() r.printAtomato() with open('automato.pkl', 'wb') as output: pickle.dump(r, output, pickle.HIGHEST_PROTOCOL)
def _ini_(self): lex = Lex() self.a1 = lex.lexer('reservados') self.a2 = lex.lexer('identicadores')
# T.E.X.T.O # A.R.R.A.N.J.O # I.N.I.C.I.O.: # E.N.Q.U.A.N.T.O # C.O.N.C.L.U.I.D.O # S.E.: # S.E.N.A.O.: # L.E.I.A # M.O.S.T.R.A # E # O.U # N.A.O # F.I.N.A.L lex = Lex() reservadas = lex.lexer() print(reservadas.aceita('MOLEIA ')) # reservadas.printAtomato() # reservadas.organizaAutomato() # reservadas.determina() # reservadas.montaAutomato() # reservadas.min() # reservadas.printAtomato() # print(reservadas.getFinais()) # print(reservadas.aceita('LEIA')) # reservadas.printAtomato() # er = Er('((((((a|b)|c)|d)|e)|g)*)') # automato = er.erToAutomato() # automato.determina() # # automato.printAtomato()