Esempio n. 1
0
    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
Esempio n. 3
0
    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
Esempio n. 5
0
    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
Esempio n. 6
0
    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
        '''
Esempio n. 7
0
    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()
Esempio n. 8
0
    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
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
    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
Esempio n. 12
0
    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
Esempio n. 13
0
 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
Esempio n. 14
0
    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
Esempio n. 15
0
    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
Esempio n. 16
0
    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
Esempio n. 17
0
    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
Esempio n. 18
0
    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
Esempio n. 19
0
    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
Esempio n. 20
0
    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
Esempio n. 21
0
    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
Esempio n. 22
0
    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
Esempio n. 23
0
    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
Esempio n. 24
0
    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
Esempio n. 25
0
    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
Esempio n. 26
0
    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
Esempio n. 27
0
    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
Esempio n. 28
0
    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
Esempio n. 29
0
    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
Esempio n. 30
0
    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