def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() code.append( c3d.asignacionString(t0, "CREATE TYPE " + self.valor + " AS ENUM (")) t1 = c3d.getTemporal() sizeCol = len(self.listaExpre) contador = 1 for enum in self.listaExpre: code.append( c3d.operacion( t1, ClassIdentificador(t0), ClassValor("\"" + enum.generar3D(tabla, arbol) + "\"", "STRING"), ClassOP_ARITMETICO.SUMA)) t0 = t1 t1 = t1 = c3d.getTemporal() if contador != sizeCol: code.append( c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\", \"", "STRING"), ClassOP_ARITMETICO.SUMA)) t0 = t1 t1 = t1 = c3d.getTemporal() contador += 1 code.append( c3d.operacion(t1, ClassIdentificador(t0), ClassValor('");"', "STRING"), ClassOP_ARITMETICO.SUMA)) code.append(c3d.asignacionTemporalStack(t1)) code.append(c3d.aumentarP()) return code
def generar3DV2(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append('h = p') code.append('h = h + 1') t0 = c3d.getTemporal() bd = arbol.getBaseDatos() if bd != None and bd != "": code.append(t0 + ' = "' + bd + '"') else: code.append(t0 + ' = ' + str(None)) code.append('heap[h] = ' + t0) code.append('h = h + 1') t1 = c3d.getTemporal() code.append(t1 + ' = "' + str(self.tabla) + '"') code.append('heap[h] = ' + t1) code.append('h = h + 1') t2 = c3d.getTemporal() code.append(t2 + ' = "' + str(self.id) + '"') code.append('heap[h] = ' + t2) code.append('h = h + 1') if self.lista_col != None: code.append('heap[h] = []') for columna in self.lista_col: t3 = c3d.getTemporal() code.append(t3 + ' = ["' + str(columna) + '"]') code.append('heap[h] = heap[h] + ' + t3) else: code.append('heap[h] = None') code.append('p = h') code.append('call_alterTable_addConstraint()') return code
def generar3DV2(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append('h = p') code.append('h = h + 1') t00 = c3d.getTemporal() code.append(t00 + ' = "' + arbol.bdUsar + '"') code.append('heap[h] = ' + t00) code.append('h = h + 1') t0 = c3d.getTemporal() code.append(t0 + ' = "' + self.valor + '"') code.append('heap[h] = ' + t0) code.append('h = h + 1') if self.lcol != None: code.append('heap[h] = []') for columna in self.lcol: t1 = c3d.getTemporal() code.append(t1 + ' = ["' + columna + '"]') code.append('heap[h] = heap[h] + ' + t1) else: code.append('heap[h] = None') code.append('h = h + 1') code.append('heap[h] = []') for valor in self.lexpre: t2 = c3d.getTemporal() code.append(t2 + ' = [' + str(valor.generar3D(tabla, arbol)) + ']') code.append('heap[h] = heap[h] + ' + t2) code.append('p = h') code.append('call_insert_table()') return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() code.append(c3d.asignacionString(t0, "ALTER TABLE " + self.tabla)) t1 = c3d.getTemporal() for col in self.lista_col: code.append( c3d.operacion( t1, Identificador(t0), Valor( " \" ALTER COLUMN " + col.id + " TYPE " + col.tipo.toString() + "\"", "STRING"), OP_ARITMETICO.SUMA)) t0 = t1 t1 = c3d.getTemporal() if col.tipo.dimension != None: code.append( c3d.operacion( t1, Identificador(t0), Valor("\"(" + str(col.tipo.dimension) + ")\"", "STRING"), OP_ARITMETICO.SUMA)) t0 = t1 t1 = c3d.getTemporal() code.append( c3d.operacion(t1, Identificador(t0), Valor("\";\"", "STRING"), OP_ARITMETICO.SUMA)) code.append(c3d.asignacionTemporalStack(t1)) code.append(c3d.aumentarP()) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() code.append(c3d.asignacionString(t0, "SELECT ")) sizeCol = len(self.lista) contador = 1 for el in self.lista: code += el.generar3D(tabla, arbol) if contador != sizeCol: t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append( c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\", \"", "STRING"), ClassOP_ARITMETICO.SUMA)) contador += 1 t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append( c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\";\"", "STRING"), ClassOP_ARITMETICO.SUMA)) code.append(c3d.asignacionTemporalStack(t1)) code.append(c3d.aumentarP()) return code
def generar3DV2(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append('h = p') code.append('h = h + 1') t0 = c3d.getTemporal() bd = arbol.getBaseDatos() if bd != None and bd != "": code.append(t0 + ' = "' + bd + '"') else: code.append(t0 + ' = ' + str(None)) code.append('heap[h] = ' + t0) code.append('h = h + 1') t1 = c3d.getTemporal() code.append(t1 + ' = "' + str(self.tabla) + '"') code.append('heap[h] = ' + t1) code.append('h = h + 1') t2 = c3d.getTemporal() code.append(t2 + ' = "' + str(self.col) + '"') code.append('heap[h] = ' + t2) code.append('p = h') code.append('call_alterTable_dropConstraint()') return code '''
def btnanalizar_click(self): global arbol arbol = None dropAll() os.system("cls") #Elimina el Contenido de txtsalida self.txtsalida[self.tab.index("current")].delete(1.0, END) #Inserta "Archivo Analizado" en txtsalida #self.txtsalida[self.tab.index("current")].insert(INSERT,"Archivo Analizado") #Selecciona el contenido de txt entrada #print(self.txtentrada[self.tab.index("current")].get(1.0,END)) input = self.txtentrada[self.tab.index("current")].get(1.0, END) tablaGlobal = Tabla(None) inst = sintactico.ejecutar_analisis(input) arbol = Arbol(inst) if len(sintactico.lista_lexicos) > 0: messagebox.showerror('Tabla de Errores', 'La Entrada Contiene Errores!') reportes.RealizarReportes.RealizarReportes.generar_reporte_lexicos( sintactico.lista_lexicos) # Ciclo que recorrerá todas las instrucciones almacenadas por la gramática. arbol.lRepDin.append("<init> ::= <instrucciones>") arbol.lRepDin.append( "<instrucciones> ::= <instrucciones> <instruccion>") arbol.lRepDin.append("<instrucciones> ::= <instruccion>") #3D file3D = open("Codigo3D.py", "w", encoding='utf8') file3DOptimizado = open("Codigo3DOptimizado.py", "w", encoding='utf8') content = c3d.getEncabezado() file3D.write(content) file3DOptimizado.write(content) for i in arbol.instrucciones: # La variable resultado nos permitirá saber si viene un return, break o continue fuera de sus entornos. if i != None: resultado = i.ejecutar(tablaGlobal, arbol) codigo = i.generar3D(tablaGlobal, arbol) for line in codigo: file3D.write("\n " + str(line)) # Después de haber ejecutado todas las instrucciones se verifica que no hayan errores semánticos. if len(arbol.excepciones) != 0: reportes.RealizarReportes.RealizarReportes.generar_reporte_lexicos( arbol.excepciones) # Ciclo que imprimirá todos los mensajes guardados en la variable consola. mensaje = '' for m in arbol.consola: mensaje += m + '\n' self.txtsalida[self.tab.index("current")].insert(INSERT, mensaje) #3D file3D.write(c3d.getPie()) file3DOptimizado.write(c3d.getPie()) file3D.close() file3DOptimizado.close()
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append(c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\"ATAN2(" + str(self.opIzq.generar3D(tabla, arbol)) + "," + str(self.opDer.generar3D(tabla, arbol)) + ")\"", "STRING"), ClassOP_ARITMETICO.SUMA)) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append(c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\"DATE_PART('" + self.identificador + "', INTERVAL '" + self.valor + "')\"", "STRING"), ClassOP_ARITMETICO.SUMA)) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append(c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\"WIDTH_BUCKET(" + str(self.valor.generar3D(tabla, arbol)) + "," + str(self.min.generar3D(tabla, arbol)) + "," + str(self.max.generar3D(tabla, arbol)) + "," + str(self.count.generar3D(tabla, arbol)) + ")\"", "STRING"), ClassOP_ARITMETICO.SUMA)) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append(c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\"CURRENT_DATE\"", "STRING"), ClassOP_ARITMETICO.SUMA)) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() code.append(c3d.asignacionString(t0, "DROP INDEX " + ";")) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.aumentarP()) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] t0 = c3d.getTemporal() code.append(c3d.asignacionString(t0, "TRUNCATE TABLE " + self.valor + ";")) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.aumentarP()) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] code.append(c3d.asignacionH()) code.append(c3d.aumentarP()) t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append(c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\"CBRT(" + str(self.valor.generar3D(tabla, arbol)) + ")\"", "STRING"), ClassOP_ARITMETICO.SUMA)) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() code.append( c3d.asignacionString( t0, "ALTER DATABASE " + self.id + " OWNER TO " + self.owner + ";")) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.aumentarP()) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() code.append( c3d.asignacionString( t0, "ALTER DATABASE " + self.nombreAntiguo + " RENAME TO " + self.nombreNuevo + ";")) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.aumentarP()) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] t0 = c3d.getTemporal() # code.append(c3d.asignacionString(t0, "CREATE INDEX " + self.ID)) code.append(c3d.asignacionString(t0, "CREATE INDEX test2_mm_idx ON tabla(id);")) #CREATE INDEX test2_mm_idx ON tabla(id); # code.append(c3d.operacion(t1, Identificador(t0), Valor("\";\"", "STRING"), OP_ARITMETICO.SUMA)) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.aumentarP()) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() if self.lcol == "*": code.append(c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\"*\"", "STRING"), ClassOP_ARITMETICO.SUMA)) t0 = t1 t1 = c3d.getTemporal() if self.lcol2 != None: code.append(c3d.operacion(t1, ClassIdentificador(t0), ClassValor("\" FROM " + self.lcol2[0].id + "\"", "STRING"), ClassOP_ARITMETICO.SUMA)) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append( c3d.operacion( t1, ClassIdentificador(t0), ClassValor( "\"EXTRACT(" + self.tiempo + " FROM TIMESTAMP '" + self.caracter + "')\"", "STRING"), ClassOP_ARITMETICO.SUMA)) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() if self.existe: code.append( c3d.asignacionString( t0, "DROP DATABASE IF EXISTS " + self.id + ";")) else: code.append( c3d.asignacionString(t0, "DROP DATABASE " + self.id + ";")) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.aumentarP()) return code
def generar3DV2(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append('h = p') code.append('h = h + 1') t0 = c3d.getTemporal() code.append(t0 + ' = "' + self.id + '"') code.append('heap[h] = ' + t0) code.append('h = h + 1') t1 = c3d.getTemporal() code.append(t1 + ' = "' + self.owner + '"') code.append('heap[h] = ' + t1) code.append('p = h') code.append('call_alterowner_database()') return code
def generar3DV2(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append('h = p') code.append('h = h + 1') t0 = c3d.getTemporal() code.append(t0 + ' = "' + arbol.getBaseDatos() + '"') code.append('heap[h] = ' + t0) code.append('h = h + 1') t1 = c3d.getTemporal() code.append(t1 + ' = "' + self.valor + '"') code.append('heap[h] = ' + t1) code.append('p = h') code.append('call_drop_table()') return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] t0 = c3d.getTemporal() column = '' if type(self.columnaNew) == 'int': column = self.columnaNew else: column = self.columnaNew code.append( c3d.asignacionString( t0, "ALTER INDEX " + self.idIndex.id + " " + self.columnaOld + " " + str(column) + ";")) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.aumentarP()) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append(c3d.asignacionH()) code.append(c3d.aumentarP()) t0 = c3d.getTemporal() if self.tipo.toString() != "enum": code.append( c3d.asignacionString(t0, self.nombre + ' ' + self.tipo.toString())) else: code.append( c3d.asignacionString(t0, self.nombre + ' ' + self.tipo.nombre)) if self.tipo.dimension != None: t1 = c3d.getTemporal() if not isinstance(self.tipo.dimension, list): code.append( c3d.operacion( t1, Identificador(t0), Valor('"(' + str(self.tipo.dimension) + ')"', "STRING"), OP_ARITMETICO.SUMA)) else: code.append( c3d.operacion( t1, Identificador(t0), Valor( '"(' + str(self.tipo.dimension[0]) + ',' + str(self.tipo.dimension[1]) + ')"', "STRING"), OP_ARITMETICO.SUMA)) t0 = t1 if self.constraint != None: for const in self.constraint: t1 = c3d.getTemporal() code.append( c3d.operacion( t1, Identificador(t0), Valor('" ' + const.toString().replace("_", " ") + '"', "STRING"), OP_ARITMETICO.SUMA)) t0 = t1 return code
def generar3DV2(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append('h = p') code.append('h = h + 1') t0 = c3d.getTemporal() code.append(t0 + ' = "' + self.nombreAntiguo + '"') code.append('heap[h] = ' + t0) code.append('h = h + 1') t1 = c3d.getTemporal() code.append(t1 + ' = "' + self.opcion + '"') code.append('heap[h] = ' + t1) code.append('h = h + 1') t2 = c3d.getTemporal() code.append(t2 + ' = "' + self.nombreNuevo + '"') code.append('heap[h] = ' + t2) code.append('p = h') code.append('call_alter_database()') return code
def generar3DV2(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append('h = p') code.append('h = h + 1') t0 = c3d.getTemporal() code.append(t0 + ' = "' + self.id + '"') code.append('heap[h] = ' + t0) code.append('h = h + 1') t1 = c3d.getTemporal() code.append(t1 + ' = ' + str(self.existe)) code.append('heap[h] = ' + t1) code.append('h = h + 1') t2 = c3d.getTemporal() code.append(t2 + ' = ' + str(self.opcion)) code.append('heap[h] = ' + t2) code.append('p = h') code.append('call_drop_database()') return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append(c3d.asignacionH()) code.append(c3d.aumentarP()) t0 = c3d.getTemporal() # code.append(c3d.asignacionString(t0, "CREATE INDEX " + self.ID)) params = '' for x in range(0, len(self.lcol)): var = self.lcol[x] if params != '': params += ', ' if 'Identificador' in str(var): params += var.id code.append( c3d.asignacionString( t0, "CREATE INDEX " + str(self.idIndex.id) + " ON " + str(self.idTabla.id) + " ( " + params + " ) ;")) #code.append(c3d.asignacionString(t0, "CREATE INDEX test2_mm_idx ON tabla(id);")) #CREATE INDEX test2_mm_idx ON tabla(id); # code.append(c3d.operacion(t1, Identificador(t0), Valor("\";\"", "STRING"), OP_ARITMETICO.SUMA)) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.LlamFuncion('call_funcion_intermedia')) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla,arbol) code = [] code.append(c3d.asignacionH()) code.append(c3d.aumentarP()) t0 = c3d.getTemporal() code.append(c3d.asignacionString(t0, "UPDATE " + self.identificador.generar3D(tabla, arbol) + " SET ")) for col in self.listaDeColumnas: '''code.append(c3d.operacion(t1, Identificador(t0), Valor(" \" ADD COLUMN " + col.id + " " + col.tipo.toString() + "\" ", "STRING"), OP_ARITMETICO.SUMA)) t0 = t1 t1 = c3d.getTemporal()''' code += col.generar3D(tabla, arbol) t0 = c3d.getLastTemporal() t1 = c3d.getTemporal() code.append(c3d.operacion(t1, Identificador(t0), Valor("\";\"", "STRING"), OP_ARITMETICO.SUMA)) code.append(c3d.asignacionTemporalStack(t1)) code.append(c3d.LlamFuncion('call_funcion_intermedia')) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append(c3d.asignacionH()) code.append(c3d.aumentarP()) t0 = c3d.getTemporal() code.append(c3d.asignacionString(t0, "SHOW DATABASES")) t1 = c3d.getTemporal() if self.valor != None: code.append( c3d.operacion( t1, Identificador(t0), Valor("\" LIKE " + "\\'" + self.valor + "\\'\" ", "STRING"), OP_ARITMETICO.SUMA)) t0 = t1 t1 = c3d.getTemporal() code.append( c3d.operacion(t1, Identificador(t0), Valor("\";\"", "STRING"), OP_ARITMETICO.SUMA)) code.append(c3d.asignacionTemporalStack(t1)) code.append(c3d.LlamFuncion('call_funcion_intermedia')) return code
def generar3D(self, tabla, arbol): super().generar3D(tabla, arbol) code = [] code.append(c3d.asignacionH()) code.append(c3d.aumentarP()) t0 = c3d.getTemporal() code.append(c3d.asignacionString(t0, "DROP TABLE " + self.valor + ";")) code.append(c3d.asignacionTemporalStack(t0)) code.append(c3d.LlamFuncion('call_funcion_intermedia')) return code