def funcionIntermedia(): global pila insts = pila.pop() nodo = g.parse(insts) raiz.hijos.append(nodo) ast.executeAST(nodo) ast.printOutputs() ast.printErrors() ast.generateTSReport() ast.erroresHTML()
def ej_ascendente(self): global is_ascendente global mensajes global reporte_gramatical self.cleanTable() self.cleanTS() is_ascendente = True del mensajes[:] etiquetas = g_asc.parse(self.text.get_text()) mensajes = g_asc.mensajes reporte_gramatical = g_asc.reporte_gramatical self.ejecutar(etiquetas)
def ejecutar(self): #f = open("./prueba.txt", "r") #input = f.read() input = self.__editor.text() Raiz = gr.parse(input) #print(Raiz.produccion) acciones_parser = acciones(Raiz) acciones_parser.ejecutar(self.plainTextEdit) gr.reporte_de_errores_sintacticos() gr.reportegramatica() gr.reporte_de_errores_lexicos() self.plainTextEdit.appendPlainText(acciones_parser.error) #print(acciones_parser.imprimir) #self.plainTextEdit.setPlainText(acciones_parser.imprimir) #self.plainTextEdit.appendPlainText("PRUEBA APE") self.plainTextEdit_2.setHtml(acciones_parser.imprimir_tabla_simbolos())
def analizar(self,editor,consola, output, errores): out = '' er = '' contador = 0 if editor.get(1.0,END) != "\n": entrada = editor.get(1.0,'end') self.AST = g.parse(entrada) #print(len(self.AST.output)) for e in self.AST.output: contador = contador + 1 out += str(contador)+'. . . .\n' + str(e) +'. . . .' +'\n' output.insert('insert',out) contador = 0 for a in self.AST.errors: contador = contador + 1 er += str(contador) + '. . . .\n'+a.toString()+'. . . .' + '\n' errores.insert('insert', er) #print(entrada) self.AST.output[:] = [] else: messagebox.showerror(message="Ingrese datos a analizar",title="TytusDB")
def debuggear(self): global is_ascendente global mensajes global reporte_gramatical self.cleanTable() is_ascendente = True del mensajes[:] etiquetas = g_asc.parse(self.text.get_text()) mensajes = g_asc.mensajes reporte_gramatical = g_asc.reporte_gramatical global ts_global if len(mensajes) > 0: self.consola.delete('1.0', END) self.consola.insert('1.0', '>>>>>Errores<<<<<') self.imprimir_errores() return ts_global = TS.TablaDeSimbolos() ts_global.reiniciar() for etiqueta in etiquetas: if not ts_global.addEtiqueta(etiqueta): mensajes.append( Mensaje( TIPO_MENSAJE.SEMANTICO, 'La etiqueta: ' + etiqueta.identificador + ' ya existe.', 0, 0)) etiqueta = ts_global.getEtiqueta('main') debugueando = True while (not (etiqueta is None)) and debugueando: bandera = False for instruccion in etiqueta.instrucciones: self.text.resaltar(instruccion.linea) res = instruccion.ejecutar(ts_global, mensajes) if isinstance(res, Etiqueta) or isinstance(instruccion, Exit): etiqueta = res bandera = True debugueando = eg.ccbox(msg='Desea continuar debugueando', title='Debug') self.text.deleteResaltar() break salida = "" for mensaje in mensajes: if mensaje.tipo_mensaje == TIPO_MENSAJE.LOG: salida += str(mensaje.mensaje).replace('\\n', '\n') self.consola.delete('1.0', END) self.consola.insert('1.0', salida) self.imprimir_errores() self.imprimir_TS() debugueando = eg.ccbox(msg='Desea continuar debugueando', title='Debug') if not debugueando: break self.text.deleteResaltar() if bandera: continue etiqueta = ts_global.getSiguiente() self.text.deleteResaltar() salida = "" for mensaje in mensajes: if mensaje.tipo_mensaje == TIPO_MENSAJE.LOG: salida += str(mensaje.mensaje).replace('\\n', '\n') self.consola.delete('1.0', END) self.consola.insert('1.0', salida) self.imprimir_errores()
import gramatica_asc as gr import tablasimbolo as TS from acciones import acciones from PyQt5 import QtCore, QtGui, QtWidgets import sys sys.setrecursionlimit(10**6) f = open("./prueba.txt", "r") input = f.read() Raiz = gr.parse(input) #print(Raiz) acciones_parser = acciones(Raiz) acciones_parser.ejecutar() gr.reportegramatica() print(acciones_parser.imprimir) print(acciones_parser.error) print(gr.reporte_de_errores_lexicos()) gr.reporte_de_errores_sintacticos() #print("\n") #print(acciones_parser.imprimir_tabla_simbolos())