def analisis(): global datos salida.delete("1.0", "end") texto = editor.get("1.0", "end") instrucciones = g.parse(texto) erroresSemanticos = [] try: hacerReporteGramatica(instrucciones['reporte']) except: print("") for instr in instrucciones['ast']: if instr != None: result = instr.execute(datos) print(result) if isinstance(result, Error): print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") escribirEnSalidaFinal(str(result.desc)) erroresSemanticos.append(result) elif isinstance(instr, select.Select): print("jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj") escribirEnSalidaFinal(str(instr.ImprimirTabla(result))) else: escribirEnSalidaFinal(str(result)) errores = g.getMistakes() recorrerErrores(errores) Rerrores(errores, erroresSemanticos) errores.clear() erroresSemanticos.clear() reporteTabla() del instrucciones
def Ejecutar(): global datos texto = request.json['query'] #f = open ('TytusTest.sql','r') #texto = f.read() #print(texto) #f.close() instrucciones = g.parse(texto) erroresSemanticos = [] salida = "" for instr in instrucciones['ast'] : if instr != None: result = instr.execute(datos) if isinstance(result, error): salida = salida + str(result.desc) + "\n" #imprimir en consola erroresSemanticos.append(result) elif isinstance(instr, select.Select) or isinstance(instr, select.QuerysSelect): salida = salida + str(instr.ImprimirTabla(result)) + "\n" #imprimir en consola else: salida = salida + str(result) + "\n" #imprimir en consola errores = g.getMistakes() salidaE = "" for error1 in errores: salidaE += error1.toString() + "\n" salida = salida + salidaE + "\n" errores.clear() erroresSemanticos.clear() del instrucciones print(salida) return jsonify({"mensaje":salida})
def analize(texto): global datos instrucciones = g.parse(texto) for instr in instrucciones['ast']: if instr != None: result = instr.execute(datos) if isinstance(result, Error): eel.printText(str(result)) elif isinstance(instr, select.Select) or isinstance( instr, select.QuerysSelect): eel.addTable( str( instr.ImprimirTabla(result).get_html_string( format=True))) elif isinstance(instr, show.Show): eel.addTable(str(result.get_html_string(format=True))) else: eel.printText(str(result)) #return str(result) errores = g.getMistakes() errores.clear() del instrucciones
def analisis(): global errores texto = editor.get("1.0", "end") instrucciones = g.parse(texto) errores = g.getMistakes() recorrerErrores() Rerrores() errores.clear()
def analisis(): global datos salida.delete("1.0", "end") texto = editor.get("1.0", "end") instrucciones = g.parse(texto) erroresSemanticos = [] try: hacerReporteGramatica(instrucciones['reporte']) except: print("") try: f = open("./Utils/tabla.txt", "r") text = f.read() text = text.replace('\'', '"') text = text.replace('False', '"False"') text = text.replace('None', '""') text = text.replace('True', '"True"') print(text) datos.reInsertarValores(json.loads(text)) print(str(datos)) except: print('error') for instr in instrucciones['ast']: if instr != None: result = instr.execute(datos) if isinstance(result, Error): escribirEnSalidaFinal(str(result.desc)) erroresSemanticos.append(result) elif isinstance(instr, select.Select) or isinstance( instr, select.QuerysSelect): escribirEnSalidaFinal(str(instr.ImprimirTabla(result))) else: escribirEnSalidaFinal(str(result)) f = open("./Utils/tabla.txt", "w") f.write(str(datos)) f.close() errores = g.getMistakes() recorrerErrores(errores) Rerrores(errores, erroresSemanticos) errores.clear() erroresSemanticos.clear() reporteTabla() del instrucciones
def analisis(): global datos salida.delete("1.0", "end") texto = editor.get("1.0", "end") #g2.tempos.restartTemp() #reinicia el contador de temporales. prueba = g2.parse(texto) try: escribirEnSalidaFinal(prueba['printList']) except: '' #print(prueba['text']) exepy = ''' #imports import sys sys.path.append('../G26/Librerias/goto') from goto import * import gramatica as g import Utils.Lista as l import Librerias.storageManager.jsonMode as storage import Instrucciones.DML.select as select from Error import * #storage.dropAll() heap = [] semerrors = [] datos = l.Lista({}, '') l.readData(datos) ''' exepy += ''' #funcion intermedia def mediador(value): global heap global semerrors # Analisis sintactico instrucciones = g.parse(heap.pop()) for instr in instrucciones['ast'] : try: val = instr.execute(datos) except: val = (instr.execute(datos, {})) if isinstance(val, Error): 'error semántico' print(val) semerrors.append(val) elif isinstance(instr, select.Select) : if value == 0: try: print(val) if len(val.keys()) > 1 : print('El numero de columnas retornadas es mayor a 1') return 0 for key in val: if len(val[key]['columnas']) > 1 : print('El numero de filas retornadas es mayor a 1') else : return val[key]['columnas'][0][0] break except: return 0 else: print(instr.ImprimirTabla(val)) else : try: return val.val except: print(val) l.writeData(datos) ''' exepy += ''' #funciones de plg-sql ''' l.readData(datos) optt = "" for val in datos.tablaSimbolos.keys(): if val == 'funciones_': for func in datos.tablaSimbolos[val]: try: f = open("./Funciones/" + func['name'] + ".py", "r") pruebaaa = f.read() optt = opt.optimizar(pruebaaa) exepy += optt f.close() except: exepy += '#Se cambio el nombre del archivo que guarda la funcion. Funcion no encontrada' exepy += ''' #main @with_goto def main(): global heap ''' exepy += str(prueba['text']) exepy += ''' #Ejecucion del main if __name__ == "__main__": main() ''' f = open("./c3d.py", "w") f.write(exepy) f.close() '''try: f = open("./Utils/tabla.txt", "r") text = f.read() f.close() text = text.replace('\'','"') text = text.replace('False','"False"') text = text.replace('None','""') text = text.replace('True','"True"') datos.reInsertarValores(json.loads(text)) except: print('error') instrucciones = g.parse(texto) erroresSemanticos = [] try: hacerReporteGramatica(instrucciones['reporte']) except: print("") for instr in instrucciones['ast'] : if instr != None: result = instr.execute(datos) if isinstance(result, Error): escribirEnSalidaFinal(str(result.desc)) erroresSemanticos.append(result) elif isinstance(instr, select.Select) or isinstance(instr, select.QuerysSelect): escribirEnSalidaFinal(str(instr.ImprimirTabla(result))) else: escribirEnSalidaFinal(str(result)) f = open("./Utils/tabla.txt", "w") f.write(str(datos)) f.close() ''' try: errores = g.getMistakes() recorrerErrores(errores) #Rerrores(errores, erroresSemanticos) errores.clear() #erroresSemanticos.clear() reporteTabla() del prueba except: '' escribirEnSalidaFinal('Se ha generado el codigo en 3 direcciones.') #aqui se puede poner o llamar a las fucniones para imprimir en la consola de salida reptOpti = prueba['opt'] fro = open("./Reportes/ReporteOptimizacion.txt", "w") fro.write(reptOpti) fro.close()
def analisis(): global datos salida.delete("1.0", "end") texto = editor.get("1.0", "end") try: f = open("./Utils/tabla.txt", "r") text = f.read() f.close() text = text.replace('\'', '"') text = text.replace('False', '"False"') text = text.replace('None', '""') text = text.replace('True', '"True"') print(text) datos.reInsertarValores(json.loads(text)) print(str(datos)) except: print('error') #g2.tempos.restartTemp() #reinicia el contador de temporales. prueba = g2.parse(texto) #print(prueba['text']) exepy = ''' #imports from goto import with_goto import gramatica as g import Utils.Lista as l import Librerias.storageManager.jsonMode as storage storage.dropAll() heap = [] datos = l.Lista({}, '') ''' exepy += ''' #funcion intermedia def mediador(): global heap # Analisis sintactico instrucciones = g.parse(heap.pop()) for instr in instrucciones['ast'] : print(instr.execute(datos)) ''' exepy += ''' #funciones de plg-sql ''' exepy += ''' #main #@with_goto def main(): global heap ''' exepy += str(prueba['text']) exepy += ''' #Ejecucion del main if __name__ == "__main__": main() ''' f = open("./c3d.py", "w") f.write(exepy) f.close() instrucciones = g.parse(texto) erroresSemanticos = [] try: hacerReporteGramatica(instrucciones['reporte']) except: print("") '''try: f = open("./Utils/tabla.txt", "r") text = f.read() text = text.replace('\'','"') text = text.replace('False','"False"') text = text.replace('None','""') text = text.replace('True','"True"') print(text) datos.reInsertarValores(json.loads(text)) print(str(datos)) except: print('error')''' for instr in instrucciones['ast']: if instr != None: result = instr.execute(datos) if isinstance(result, Error): escribirEnSalidaFinal(str(result.desc)) erroresSemanticos.append(result) elif isinstance(instr, select.Select) or isinstance( instr, select.QuerysSelect): escribirEnSalidaFinal(str(instr.ImprimirTabla(result))) else: escribirEnSalidaFinal(str(result)) f = open("./Utils/tabla.txt", "w") f.write(str(datos)) f.close() errores = g.getMistakes() recorrerErrores(errores) Rerrores(errores, erroresSemanticos) errores.clear() erroresSemanticos.clear() reporteTabla() del instrucciones
def analisis(): global datos fc3d = open("./c3d/codigo3Dgenerado.py", "w") fc3d.write("from sentencias import *\n") fc3d.write("from goto import with_goto\n") fc3d.write("@with_goto # Decorador necesario.\n") fc3d.write("\n") fc3d.write("def main():\n") fc3d.close() salida.delete("1.0", "end") texto = editor.get("1.0", "end") instrucciones = g.parse(texto) erroresSemanticos = [] try: hacerReporteGramatica(instrucciones['reporte']) except: print("") try: f = open("./Utils/tabla.txt", "r") text = f.read() text = text.replace('\'','"') text = text.replace('False','"False"') text = text.replace('None','""') text = text.replace('True','"True"') #print(text) datos.reInsertarValores(json.loads(text)) #print(str(datos)) except: print('error bloque utils tabla') for instr in instrucciones['ast'] : if instr != None: result = instr.execute(datos) #print(result) if isinstance(result, Error): #sprint("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") escribirEnSalidaFinal(str(result.desc)) erroresSemanticos.append(result) elif isinstance(instr, select.Select) or isinstance(instr, select.QuerysSelect): escribirEnSalidaFinal(str(instr.ImprimirTabla(result))) else: escribirEnSalidaFinal(str(result)) f = open("Utils/tabla.txt", "w") f.write(str(datos)) f.close() fc3d = open("./c3d/codigo3Dgenerado.py", "a") fc3d.write("\n") fc3d.write("main()\n") fc3d.close() errores = g.getMistakes() recorrerErrores(errores) Rerrores(errores, erroresSemanticos) errores.clear() erroresSemanticos.clear() repIndex.reporteTablaIndices(datos) reporteTabla() del instrucciones