Ejemplo n.º 1
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, "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.LlamFuncion('call_funcion_intermedia'))

        return code
Ejemplo n.º 2
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
Ejemplo n.º 3
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
Ejemplo n.º 4
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
Ejemplo n.º 5
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
Ejemplo n.º 6
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
Ejemplo n.º 7
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 TABLE " + self.tabla + " (\\n"))

        sizeCol = len(self.campos)
        contador = 1
        for col in self.campos:
            if isinstance(col, Campo):
                sizeCol -= 1
            elif not isinstance(col, Campo):
                lista = col.generar3D(tabla, arbol)
                code += lista
                tLast = c3d.getLastTemporal()
                if contador != sizeCol:
                    t3 = c3d.getTemporal()
                    code.append(
                        c3d.operacion(t3, Identificador(tLast),
                                      Valor('",\\n"', "STRING"),
                                      OP_ARITMETICO.SUMA))
                    contador += 1
                    tLast = t3
                t2 = c3d.getTemporal()
                code.append(
                    c3d.operacion(t2, Identificador(t0), Identificador(tLast),
                                  OP_ARITMETICO.SUMA))
                t0 = t2

        for col in self.copy_campos:
            t1 = c3d.getTemporal()
            code.append(
                c3d.operacion(t1, Identificador(t0), Valor('",\\n"', "STRING"),
                              OP_ARITMETICO.SUMA))
            lista = col.generar3D()
            code += lista
            t0 = c3d.getLastTemporal()

        t1 = c3d.getTemporal()
        if self.herencia != None:
            code.append(
                c3d.operacion(
                    t1, Identificador(t0),
                    Valor('"\\n) INHERITS (' + self.herencia + '"', "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
Ejemplo n.º 8
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("\"ATAN2(" + str(self.opIzq.generar3D(tabla, arbol)) + "," + str(self.opDer.generar3D(tabla, arbol)) + ")\"", "STRING"), ClassOP_ARITMETICO.SUMA))

        return code
Ejemplo n.º 9
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
Ejemplo n.º 10
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
Ejemplo n.º 11
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
Ejemplo n.º 12
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
Ejemplo n.º 13
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("\"TIMESTAMP '" + self.identificador + "'\"",
                           "STRING"), ClassOP_ARITMETICO.SUMA))

        return code
Ejemplo n.º 14
0
    def generar3D(self, tabla, arbol):
        super().generar3D(tabla,arbol)
        code = []
        code.append(c3d.asignacionH())
        code.append(c3d.aumentarP())
        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.LlamFuncion('call_funcion_intermedia'))

        return code
Ejemplo n.º 15
0
    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(" \" ADD COLUMN " + col.id + " " + col.tipo.toString() + "\" ", "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
Ejemplo n.º 16
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))
        code.append(
            c3d.asignacionString(t0, "DROP PROCEDURE " + str(self.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
Ejemplo n.º 17
0
    def generar3D(self):
        code = []
        code.append(c3d.asignacionH())
        code.append(c3d.aumentarP())
        t0 = c3d.getLastTemporal()
        t1 = c3d.getTemporal()
        if self.id != None:
            code.append(
                c3d.operacion(
                    t1, ClassIdentificador(t0),
                    ClassValor("\"" + str(self.id) + " \"", "STRING"),
                    ClassOP_ARITMETICO.SUMA))
            t0 = t1
            t1 = c3d.getTemporal()

        code.append(
            c3d.operacion(
                t1, ClassIdentificador(t0),
                ClassValor("\"" + self.toString().replace('_', ' ') + "(\"",
                           "STRING"), ClassOP_ARITMETICO.SUMA))
        t0 = t1
        t1 = c3d.getTemporal()

        for cont in range(len(self.expresion)):
            code.append(
                c3d.operacion(
                    t1, ClassIdentificador(t0),
                    ClassValor('"' + self.expresion[cont] + '"', "STRING"),
                    ClassOP_ARITMETICO.SUMA))
            t0 = t1
            t1 = c3d.getTemporal()

            if cont + 1 != len(self.expresion):
                code.append(
                    c3d.operacion(t1, ClassIdentificador(t0),
                                  ClassValor('","', "STRING"),
                                  ClassOP_ARITMETICO.SUMA))
                t0 = t1
                t1 = c3d.getTemporal()

        code.append(
            c3d.operacion(t1, ClassIdentificador(t0),
                          ClassValor("\")\\n\"", "STRING"),
                          ClassOP_ARITMETICO.SUMA))

        return code
Ejemplo n.º 18
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
Ejemplo n.º 19
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
Ejemplo n.º 20
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
Ejemplo n.º 21
0
    def generar3D(self, tabla, arbol):
        super().generar3D(tabla, arbol)
        code = []
        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.aumentarP())

        return code
Ejemplo n.º 22
0
    def generar3D(self, tabla, arbol):
        super().generar3D(tabla,arbol)
        code = []
        t0 = c3d.getTemporal()
        if self.existe == "IF NOT EXISTS":
            code.append(c3d.asignacionString(t0, "CREATE DATABASE IF NOT EXISTS " + self.base))
        else:
            code.append(c3d.asignacionString(t0, "CREATE DATABASE " + self.base))
        t1 = c3d.getTemporal()
        if self.owner != None:
            code.append(c3d.operacion(t1, Identificador(t0), Valor("\" OWNER = " + "\\'" + self.owner + "\\'\" ", "STRING"), OP_ARITMETICO.SUMA))
            t0 = t1
            t1 = c3d.getTemporal()
        if self.mode != None:
            code.append(c3d.operacion(t1, Identificador(t0), Valor("\" MODE = " + str(self.mode) + "\"", "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
Ejemplo n.º 23
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()
        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
Ejemplo n.º 24
0
    def generar3D(self, tabla, arbol):
        super().generar3D(tabla, arbol)
        code = []
        t0 = c3d.getTemporal()
        code.append(c3d.asignacionString(t0, "INSERT INTO " + self.valor))
        t1 = c3d.getTemporal()
        if self.lcol != None:
            code.append(
                c3d.operacion(t1, Identificador(t0),
                              Valor(" \" (\" ", "STRING"), OP_ARITMETICO.SUMA))
            t0 = t1
            t1 = c3d.getTemporal()
            sizeCol = len(self.lcol)
            contador = 1
            for col in self.lcol:
                code.append(
                    c3d.operacion(t1, Identificador(t0),
                                  Valor("\"" + col + "\"", "STRING"),
                                  OP_ARITMETICO.SUMA))
                t0 = t1
                t1 = c3d.getTemporal()
                if contador != sizeCol:
                    code.append(
                        c3d.operacion(t1, Identificador(t0),
                                      Valor("\", \"", "STRING"),
                                      OP_ARITMETICO.SUMA))
                else:
                    code.append(
                        c3d.operacion(t1, Identificador(t0),
                                      Valor("\")\"", "STRING"),
                                      OP_ARITMETICO.SUMA))
                contador += 1
                t0 = t1
                t1 = c3d.getTemporal()

        code.append(
            c3d.operacion(t1, Identificador(t0),
                          Valor(" \" VALUES (\" ", "STRING"),
                          OP_ARITMETICO.SUMA))
        t0 = t1
        sizeCol = len(self.lexpre)
        contador = 1
        for col in self.lexpre:
            result = col.generar3D(tabla, arbol)
            if not isinstance(result, list):
                t1 = c3d.getTemporal()
                code.append(
                    c3d.operacion(t1, Identificador(t0),
                                  Valor("\"" + str(result) + "\"", "STRING"),
                                  OP_ARITMETICO.SUMA))
                '''if col != None:
                    code.append(c3d.operacion(t1, Identificador(t0), Valor("\"" + str(col.generar3D(tabla, arbol)) + "\"", "STRING"), OP_ARITMETICO.SUMA))
                t0 = t1
                t1 = c3d.getTemporal()
                if contador != sizeCol:
                    code.append(c3d.operacion(t1, Identificador(t0), Valor("\", \"", "STRING"), OP_ARITMETICO.SUMA))'''
                t0 = t1
                t1 = c3d.getTemporal()
            else:
                code += result
                t0 = c3d.getLastTemporal()
                t1 = c3d.getTemporal()

            if contador != sizeCol:
                code.append(
                    c3d.operacion(t1, Identificador(t0),
                                  Valor("\", \"", "STRING"),
                                  OP_ARITMETICO.SUMA))
            else:
                code.append(
                    c3d.operacion(t1, Identificador(t0),
                                  Valor("\");\"", "STRING"),
                                  OP_ARITMETICO.SUMA))
            t0 = t1
            contador += 1

        code.append(c3d.asignacionTemporalStack(t0))
        code.append(c3d.aumentarP())

        return code
Ejemplo n.º 25
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, "ALTER TABLE " + self.tabla + "\\n"))
        t1 = c3d.getTemporal()
        code.append(
            c3d.operacion(
                t1, Identificador(t0),
                Valor("\"ADD CONSTRAINT " + self.id_constraint + "\\n\"",
                      "STRING"), OP_ARITMETICO.SUMA))
        t0 = t1
        t1 = c3d.getTemporal()
        code.append(
            c3d.operacion(t1, Identificador(t0),
                          Valor("\"FOREIGN KEY (\"", "STRING"),
                          OP_ARITMETICO.SUMA))
        t0 = t1
        t1 = c3d.getTemporal()

        sizeCol = len(self.lista_id1)
        contador = 1
        for id in self.lista_id1:
            code.append(
                c3d.operacion(t1, Identificador(t0),
                              Valor("\"" + id + "\"", "STRING"),
                              OP_ARITMETICO.SUMA))
            t0 = t1
            t1 = c3d.getTemporal()
            if contador != sizeCol:
                code.append(
                    c3d.operacion(t1, Identificador(t0),
                                  Valor('", "', "STRING"), OP_ARITMETICO.SUMA))
                t0 = t1
                t1 = c3d.getTemporal()
            contador += 1

        code.append(
            c3d.operacion(
                t1, Identificador(t0),
                Valor("\")\\nREFERENCES " + self.tabla2 + "(\"", "STRING"),
                OP_ARITMETICO.SUMA))
        t0 = t1
        t1 = c3d.getTemporal()

        sizeCol = len(self.lista_id2)
        contador = 1
        for id in self.lista_id2:
            code.append(
                c3d.operacion(t1, Identificador(t0),
                              Valor("\"" + id + "\"", "STRING"),
                              OP_ARITMETICO.SUMA))
            t0 = t1
            t1 = c3d.getTemporal()
            if contador != sizeCol:
                code.append(
                    c3d.operacion(t1, Identificador(t0),
                                  Valor('", "', "STRING"), OP_ARITMETICO.SUMA))
                t0 = t1
                t1 = c3d.getTemporal()
            contador += 1
        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