示例#1
0
def send_data():
    print("Analizando Entrada:")
    print("==============================================")
    reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    Tsalida.delete("1.0", "end")
    Tsalida.configure(state='normal')
    Tsalida.insert(INSERT, "Salida de consultas")
    Tsalida.configure(state='disabled')

    #print(contenido)

    g.parse(contenido)
    reporte_lex_sin()
示例#2
0
def send_data():
    print("Analizando Entrada:")
    print("==============================================")
    # reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    variables.consola.delete("1.0", "end")
    variables.consola.configure(state='normal')

    # print(contenido)
    Principal = Entorno()
    jsonMode.dropAll()

    # Principal.database = "DB1"

    instrucciones = g.parse(contenido)
    variables.consola.insert(INSERT, "Salida de consultas\n")
    for instr in instrucciones:
        if instr != None:
            instr.ejecutar(Principal)
            string = str(instr)
            intrprueba = string

    variables.consola.configure(state='disabled')
    # variables.consola.configure()

    setContenido(Principal.mostrarSimbolos())
示例#3
0
    def debug2(self):
        print("debug")
        import principal2 as p2
        import gramatica2 as g2
        import ts2 as TS2
        global contador
        #f = open("./entrada.txt", "r")
        input = self.text3.toPlainText()
        #print(input)
        g2.cleanErrores()
        instrucciones = g2.parse(input)
        #print("primer print:",instrucciones)

        errores = g2.getErrores()
        gram = g2.getGramatical()
        ts_global = TS2.TablaDeSimbolos()

        p2.graficar_arbol(instrucciones)
        p2.procesar_instrucciones_main_debug(instrucciones, contador,
                                             ts_global)
        contador += 1
        cadena = p2.getCadena()

        if len(errores) > 0:
            p2.reporte_errores(errores)

        #p.reporte_gramatica(gram)
        p2.reporte_tabla_simbolos(ts_global.simbolos)
        #print(ts_global.simbolos)
        #print(gram.reverse())
        #print("errores",errores)
        #print("tabla", ts_global)
        self.text2.setText(cadena)
示例#4
0
def send_data():
    print("Analizando Entrada:")
    print("==============================================")
    # reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    variables.consola.delete("1.0", "end")
    variables.consola.configure(state='normal')

    # print(contenido)
    Principal = Entorno()
    jsonMode.dropAll()

    # Principal.database = "DB1"
    instrucciones = g.parse(contenido)
    variables.consola.insert(INSERT, "Salida de consultas\n")
    for instr in instrucciones:
        if instr != None:

            res = instr.ejecutar(Principal)
            if res != None:
                res = str(res) + '\n'
                variables.consola.insert(INSERT, res)
                
    variables.consola.configure(state='disabled')
    #variables.consola.configure()

    tSym = Principal.mostrarSimbolos()
    with open('ts.dot', 'w', encoding='utf8') as ts:
            ts.write(tSym)
            
    check_call(['dot', '-Tpdf', 'ts.dot', '-o', 'ts.pdf'])

    reporte_lex_sin()
示例#5
0
    def run(self):
        #f = open("./entrada.txt", "r")
        input = self.text.toPlainText()
        #print(input)
        g.cleanErrores()

        instrucciones = g.parse(input)
        #print("primer print:",instrucciones)

        errores = g.getErrores()
        gram = g.getGramatical()
        ts_global = TS.TablaDeSimbolos()

        p.graficar_arbol(instrucciones)
        p.procesar_instrucciones_main(instrucciones, ts_global)
        cadena = p.getCadena()
        print("esto tiene la cadena", cadena)
        if len(errores) > 0:
            print("hay errores")
            p.reporte_errores(errores)
        else:
            print("no hay errores")
        p.reporte_tabla_simbolos(ts_global.simbolos)
        p.reporte_gramatica(gram)
        #print("paso el reporte gramatica")
        #p.reporte_tabla_simbolos(ts_global.simbolos)
        #print("paso el reporte ts")
        #print(ts_global.simbolos)
        #print(gram.reverse())
        #print("errores",errores)
        #print("tabla", ts_global)
        self.text2.setText(cadena)
示例#6
0
文件: principal.py 项目: XiomRB/tytus
def send_data():
    print("Analizando Entrada:")
    print("==============================================")
    # reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    Tsalida.delete("1.0", "end")
    Tsalida.configure(state='normal')

    # print(contenido)
    jsonMode.dropAll()
    jsonMode.createDatabase("DB1")
    Principal = Entorno()

    Principal.database = "DB1"
    instrucciones = g.parse(contenido)
    Tsalida.insert(INSERT, "Salida de consultas\n")
    for instr in instrucciones:
        if instr != None:

            res = instr.ejecutar(Principal)
            if res != None:
                res += '\n'
                Tsalida.insert(INSERT, res)

    Tsalida.configure(state='disabled')
    Principal.mostrarSimbolos()

    reporte_lex_sin()
示例#7
0
def send_data():
    print("Analizando Entrada:")
    print("==============================================")
    contenido = Tentrada.get(1.0, 'end')
    Tsalida.delete("1.0", "end")
    Tsalida.configure(state='normal')
    Tsalida.insert(INSERT, "Salida de consultas")
    Tsalida.configure(state='disabled')
    print(contenido)

    instrucciones = g.parse(contenido)
示例#8
0
def Main2(input, consola):
    global archivoDot
    global idP
    archivoDot = ""
    idP = 0
    global shell
    shell = consola
    instrucciones = g2.parse(input)
    ts_global = TS.TablaDeSimbolos()
    procesar_instrucciones2(instrucciones, len(instrucciones) - 1, ts_global)
    archivoDot += "Digraph{\n p0[label=\"Main\"];\n"
    graficar_procesar_instrucciones(instrucciones, 0, ts_global)
    contadorPadre2()
    archivoDot += "}"
    crearTS(ts_global)
示例#9
0
def traducir():
    # reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    variables.consola.delete("1.0", "end")
    variables.consola.configure(state='normal')

    Principal = Entorno()
    #jsonMode.dropAll()

    instrucciones = g.parse(contenido)
    variables.consola.insert(INSERT, "Salida de traduccion\n")
    salida = 'from goto import with_goto\n'
    salida += 'from CodigoIntermedio import CodigoIntermedio\n'
    salida += 'from Entorno.Entorno import Entorno\n'
    salida += '@with_goto\n'
    salida += 'def prueba():\n'
    salida += '\tstack =[]\n'
    salida += '\tci = CodigoIntermedio(Entorno())\n'

    salida2 = ''
    for instr in instrucciones:
        if instr != None:

            #try:
            s = instr.traducir(Principal)
            if s != None:
                salida2 += s.codigo3d
        #except  Exception as inst:
        #   print(inst)

    salida2 = salida2.replace('goto temp', generarsaltos())
    filas = salida2.split('\n')
    salida2 = ''
    for fila in filas:
        salida2 += '\t' + fila + '\n'

    salida = salida + salida2
    f = open('tsAux', 'w')
    f.write(Principal.mostrarProc())
    f.close()

    print(salida)
    f = open('prueba.py', 'w')
    f.write(salida)
    f.write('\tci.getSym()\n')
    f.close()
示例#10
0
def traducir():
    # reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    variables.consola.delete("1.0", "end")
    variables.consola.configure(state='normal')

    Principal = Entorno()
    jsonMode.dropAll()

    instrucciones = g.parse(contenido)
    variables.consola.insert(INSERT, "Salida de traduccion\n")
    salida = ''
    for instr in instrucciones:
        if instr != None:
            salida += instr.traducir(Principal).codigo3d

    print(salida)
示例#11
0
def send_data():
    print("Analizando Entrada:")
    print("==============================================")
    #reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    Tsalida.delete("1.0", "end")
    Tsalida.configure(state='normal')
    Tsalida.insert(INSERT, "Salida de consultas")
    Tsalida.configure(state='disabled')
   
    #print(contenido)

    globalEnt = Entorno()
    raiz = g.parse(contenido)
    for x in raiz:
        if x != None:
            x.ejecutar(globalEnt)
示例#12
0
def traducir():
    # reporteerrores = []
    contenido = Tentrada.get(1.0, 'end')
    variables.consola.delete("1.0", "end")
    variables.consola.configure(state='normal')

    Principal = Entorno()
    #jsonMode.dropAll()

    instrucciones = g.parse(contenido)
    variables.consola.insert(INSERT, "Salida de traduccion\n")
    salida = 'from goto import with_goto\n'
    salida += 'from CodigoIntermedio import CodigoIntermedio\n'
    salida += 'from Entorno.Entorno import Entorno\n'
    salida += '@with_goto\n'
    salida += 'def prueba():\n'
    salida += '\tstack =[]\n'
    salida += '\tci = CodigoIntermedio(Entorno())\n'

    salida2 = ''
    for instr in instrucciones:
        if instr != None:
            s = instr.traducir(Principal)
            if s != None:
                salida2 += s.codigo3d
    filas = salida2.split('\n')
    salida2 = ''
    for fila in filas:
        salida2 += '\t' + fila + '\n'

    salida = salida + salida2
    for i in range(0, salida.count('goto temp')):
        salida = salida.replace('goto temp', 'goto ' + str(variables.stack[i]),
                                1)

    print(salida)
    f = open('prueba.py', 'w')
    f.write(salida)
    f.close()
示例#13
0
    def run2(self):
        import principal2 as p2
        import gramatica2 as g2
        import ts2 as TS2
        print("segundo run")

        #f = open("./entrada.txt", "r")
        input = self.text3.toPlainText()
        print("esto trae la cadena2\n", input)
        g2.cleanErrores()
        print("obtuvo errores")
        instrucciones = g2.parse(input)
        print("primer print:", instrucciones)

        errores2 = g2.getErrores()
        gram2 = g2.getGramatical()
        ts_global2 = TS2.TablaDeSimbolos()
        ts_global2.clear
        p2.graficar_arbol(instrucciones)
        p2.procesar_instrucciones_main(instrucciones, ts_global2)
        ca = p2.getCadena()
        #print("esto tiene la cadena", cadena)
        if len(errores2) > 0:
            print("hay errores")
            p2.reporte_errores(errores2)
        else:
            print("no hay errores")
        p2.reporte_tabla_simbolos(ts_global2.simbolos)
        p2.reporte_gramatica(gram2)
        #print("paso el reporte gramatica")
        #p.reporte_tabla_simbolos(ts_global.simbolos)
        #print("paso el reporte ts")
        #print(ts_global.simbolos)
        #print(gram.reverse())
        #print("errores",errores)
        #print("tabla", ts_global)
        self.text2.setText(ca)
示例#14
0
        if ts.obtener(expNum.id).valor < 0:
            return ts.obtener(expNum.id).valor * -1
        elif ts.obtener(expNum.id).valor > 0:
            return ts.obtener(expNum.id).valor


def procesar_instrucciones(instrucciones, ts):
    ## lista de instrucciones recolectadas
    for instr in instrucciones:
        if isinstance(instr, Imprimir): procesar_imprimir(instr, ts)
        elif isinstance(instr, Definicion_Asignacion):
            procesar_asignacion(instr, ts)
        elif isinstance(instr, Definicion_Asignacion_Cadena):
            procesar_asignacion_cadena(instr, ts)
        elif isinstance(instr, Mientras):
            procesar_mientras(instr, ts)
        elif isinstance(instr, If):
            procesar_if(instr, ts)
        elif isinstance(instr, IfElse):
            procesar_if_else(instr, ts)
        else:
            print('Error: instrucción no válida')


f = open("./entrada.txt", "r")
input = f.read()

instrucciones = g.parse(input)
ts_global = TS.TablaDeSimbolos()

procesar_instrucciones(instrucciones, ts_global)
示例#15
0
 def ejecutarsql(self, stringinstr):
     'ejecucion del bloque'
     instr=g.parse(stringinstr)
     for inst in instr:
         return inst.ejecutar(self.entorno)