def inicia(args): input = entrytext.get() bd = AutomatoBD() bd.inicia() lex = Lex() lex.identificaToken(input)
__author__ = 'lucasmpalma and luizu' from lex import Lex from automatoBD import AutomatoBD import Tkinter as Tk import ttk lex = Lex() lex.identificaToken('algoritmos/meuPrograma.txt') # a = AutomatoBD() # a.inicia()
def compila(input): input = entrytext.get() lex = Lex() lex.identificaToken(input)
def sintetic(input): lex = Lex() lex.identificaToken(input) file = open('../testes/'+'tokens.txt', 'r') actual = '' pilha = ['$', '<S>'] gambs = [';', ','] aspas = '******' novo = '' for line in file: for item in line: # if item != '(' and item != ')': actual += item if item == '\n': # tratamentos if 'PR' in actual: actual = actual.replace(", PR)\n", '') actual = actual.replace("(", '') elif ' , SP)\n' in actual or actual == '(\\n, SP)\n': actual = '' break elif 'SP' in actual: actual = actual[1] elif 'PR' not in actual and 'SP' not in actual: actual = actual[-4]+actual[-3] # algoritimo while actual != pilha[len(pilha)-1]: if actual == pilha[len(pilha)-1]: pilha.pop() else: elemento = pilha[len(pilha)-1] try: j = terminais[actual] i = nTerminais[elemento] except KeyError: return "ERRO SINTATICO" else: producao = arr[i][j] if producao == "&": pilha.pop() else: if producao == 'E': return "ERRO SINTATICO" else: tamanho = len(producao) pilha.pop() concatena = '' for num in range(tamanho-1, -1, -1): if producao[num] not in gambs: concatena += producao[num] if producao[num] in gambs: pilha.append(producao[num]) concatena = '' if producao[num] == ' ' or num == 0: concatena = concatena[::-1] if ' ' in concatena: concatena = concatena.replace(' ', '') if """ " """ not in concatena and concatena != '': pilha.append(concatena) concatena = '' pilha.pop() actual = '' if pilha[len(pilha)-1] == '$': return "SINTATICAMENTE CORRETO" else: return "ERRO SINTATICO"