Example #1
0
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
Example #2
0
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})
Example #3
0
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
Example #4
0
def analisis():
    global errores
    texto = editor.get("1.0", "end")
    instrucciones = g.parse(texto)
    errores = g.getMistakes()
    recorrerErrores()
    Rerrores()
    errores.clear()
Example #5
0
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
Example #6
0
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()
Example #7
0
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
Example #8
0
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