Пример #1
0
def procesar_if_else(instr, ts):
    val = resolver_expreision_logica(instr.expLogica, ts)
    if val:
        ts_local = TS.TablaDeSimbolos(ts.simbolos)
        procesar_instrucciones(instr.instrIfVerdadero, ts_local)
    else:
        ts_local = TS.TablaDeSimbolos(ts.simbolos)
        procesar_instrucciones(instr.instrIfFalso, ts_local)
Пример #2
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)
Пример #3
0
    def debug(self):
        print("debug")
        global contador
        #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_debug(instrucciones, contador, ts_global)
        contador += 1
        cadena = p.getCadena()

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

        #p.reporte_gramatica(gram)
        p.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 analizar(txt):
    global instrucciones_Global
    instrucciones = g.parse(txt)
    instrucciones_Global = instrucciones
    ts_global = TS.TablaDeSimbolos()

    salida = procesar_instrucciones(instrucciones, ts_global)

    print("analizando...")
    print(txt)
    salida_table(2, salida)
Пример #5
0
def analizar_select(e):
    global selected
    if my_text.selection_get():
        global instrucciones_Global
        selected = my_text.selection_get()
        print(selected)
        instrucciones = g.parse(selected)
        instrucciones_Global = instrucciones
        ts_global = TS.TablaDeSimbolos()
        salida = procesar_instrucciones(instrucciones, ts_global)
        salida_table(2, salida)
Пример #6
0
def analizar(txt):
    listaErrores = []
    global instrucciones_Global,tc_global1
    instrucciones = g.parse(txt)
    instrucciones_Global = instrucciones
    ts_global = TS.TablaDeSimbolos()
    tc_global = TC.TablaDeTipos()
    tc_global1 = tc_global
    salida = procesar_instrucciones(instrucciones, ts_global,tc_global)

    print("analizando...")
    print(txt)
    salida_table(2,salida)
Пример #7
0
    def analizar(self):
        print("current limit:" + str(sys.getrecursionlimit()))
        print("Iniciando analisis")
        ts_global = TS.TablaDeSimbolos()
        ms_global = MS.Mensajes()
        parser = GR.Gramatica(ms_global)
        GLO.gramatica = {}
        GLO.isdesc = False
        input = self.ToAnalize.get("1.0", 'end-1c')
        input += " \n exit;"
        instrucciones = parser.parse(input)
        #SinLex = parser.Errors()

        if instrucciones is not None:
            self.procesar_instrucciones(instrucciones, ts_global, ms_global)
        salida = ""
        if (ms_global.correcto):
            print("Analisis correcto")
            showinfo("Notepad", "Analisis correcto")
            prints = ms_global.GetMensajes()
            for Mensaje in prints:
                print(Mensaje.constructMensaje())
                salida += Mensaje.constructMensaje()
            arparser = AR.AST()
            raiz = arparser.parse(input)
            graf = TreeMaker(raiz)
            try:
                graf.crearArbol()
            except:
                print("No se genero el arbol")
            #self.ToTS.config(state='normal')
            self.ToERR.config(state='disabled')

        else:
            print("Se encontraron errores")
            showinfo("Notepad", "Se encontraron errores")
            self.errores = ms_global.GetErrores()
            '''if (SinLex is not None):
                for Mensaje in SinLex.mensajes:
                    print(Mensaje.constructError())
                    salida+=Mensaje.constructError()'''
            for Mensaje in self.errores:
                print(Mensaje.constructError())
                salida += Mensaje.constructError()
            #self.ToTS.config(state='disabled')
            self.ToERR.config(state='normal')

        self.setText(salida)
        self.ts_global = ts_global
        self.ms_global = ms_global
        self.ts_global.printts()
Пример #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 procesar_funcionCreateIndex3(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse(' CREATE  UNIQUE  INDEX idx_producto ON tbProducto   (  idproducto       );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #10
0
	def procesar_funcionCreateDatabase0(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('CREATE DATABASE DBFase2;')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #11
0
	def procesar_funcionUpdate29(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse(' update tbbodega set  bodega =    \'bodega zona 9\'      where       idbodega    =     4        ;')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #12
0
	def procesar_funcionInsert28(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('insert into tbbodega ( idbodega,bodega,estado ) values (     5    ,   \'BODEGA ZONA 10\'   ,    1     );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #13
0
	def procesar_funcionInsert22(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('insert into tbCalificacion values (     5    ,   \'Valida Delete\'   ,    2     );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #14
0
	def procesar_funcionCreateTable18(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('create table tbbodega (  idbodega  integer    not null    primary key   , bodega  varchar ( 100 )    not null   , estado  integer   );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #15
0
	def procesar_funcionCreateIndex19(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse(' CREATE   INDEX tbbodegaIndex ON tbbodega   (  lower ( bodega )       );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #16
0
	def procesar_funcionUpdate15(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse(' update tbProducto set  estado =     2       where       estado    =     1        ;')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #17
0
	def procesar_funcionInsert13(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('INSERT INTO tbProducto values (     8    ,   \'Laptop Samsung\'   ,   \'2021-01-02\'   ,    1     );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #18
0
	def procesar_funcionInsert12(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('INSERT INTO tbProducto values (     7    ,   \'Teclado Flexible USB\'   , now ( ) ,    1     );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #19
0
	def procesar_funcionCreateTable4(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('CREATE TABLE tbCalificacion (  idcalifica  integer    not null    primary key   , item  varchar ( 100 )    not null   , punteo  integer    not null    );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #20
0
	def procesar_funcionCreateTable2(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('CREATE TABLE tbProducto (  idproducto  integer    not null    primary key   , producto  varchar ( 150 )    not null   , fechacreacion  date    not null   , estado  integer   );')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #21
0
	def procesar_funcionSelect23(self):
		global instrucciones_Global,tc_global1,ts_global1,listaErrores,erroressss,ts_globalIndex1
		instrucciones = g.parse('  select    *   from  tbbodega   ;')
		erroressss = ErrorHTML()
		if  erroressss.getList()== []:
			instrucciones_Global = instrucciones
			ts_global = TS.TablaDeSimbolos()
			ts_globalIndex = TSINDEX.TablaDeSimbolos()
			tc_global = TC.TablaDeTipos()
			tc_global1 = tc_global
			ts_global1 = ts_global
			ts_globalIndex1 = ts_globalIndex
			salida = procesar_instrucciones(instrucciones, ts_global,tc_global,ts_globalIndex)
			print(salida)
		else:
			print('Parser Error')
Пример #22
0
def procesar_llamada(instr, ts):
    ts_local = TS.TablaDeSimbolos(ts.simbolos, ts.funciones)

    funcion = ts.obtener_funcion(instr.id)

    if len(funcion.parametros) == len(instr.parametros):

        for par in enumerate(funcion.parametros):
            val = resolver_expresion_aritmetica(instr.parametros[par[0]], ts)
            #print(par.id, " = ", val)
            simbolo = TS.Simbolo(par[1].id, TS.TIPO_DATO.NUMERO, val)
            ts_local.agregar(simbolo)

        return procesar_instrucciones(funcion.instrucciones, ts_local)
    else:
        print('Error: cantidad de parametros no erronea')
Пример #23
0
    def procesar_database1(self):
        global instrucciones_Global, tc_global1, ts_global1, listaErrores, erroressss
        instrucciones = g.parse('CREATE DATABASE prueba1;')
        erroressss = ErrorHTML()

        if erroressss.getList() == []:
            instrucciones_Global = instrucciones
            ts_global = TS.TablaDeSimbolos()
            tc_global = TC.TablaDeTipos()
            tc_global1 = tc_global
            ts_global1 = ts_global
            salida = procesar_instrucciones(instrucciones, ts_global,
                                            tc_global)
            return salida
        else:
            print('Parser Error')
Пример #24
0
 def procesar_funcion1(self):
     global instrucciones_Global, tc_global1, ts_global1, listaErrores, erroressss, ts_globalIndex1
     instrucciones = g.parse('USE DBFase2;')
     erroressss = ErrorHTML()
     if erroressss.getList() == []:
         instrucciones_Global = instrucciones
         ts_global = TS.TablaDeSimbolos()
         ts_globalIndex = TSINDEX.TablaDeSimbolos()
         tc_global = TC.TablaDeTipos()
         tc_global1 = tc_global
         ts_global1 = ts_global
         ts_globalIndex1 = ts_globalIndex
         salida = procesar_instrucciones(instrucciones, ts_global,
                                         tc_global, ts_globalIndex)
         return salida
     else:
         return 'Parser Error'
Пример #25
0
def analizar(txt):

    global instrucciones_Global, tc_global1, ts_global1, listaErrores
    instrucciones = g.parse(txt)
    if erroressss.getList() == []:
        instrucciones_Global = instrucciones
        ts_global = TS.TablaDeSimbolos()
        tc_global = TC.TablaDeTipos()
        tc_global1 = tc_global
        ts_global1 = ts_global
        salida = procesar_instrucciones(instrucciones, ts_global, tc_global)

        if type(salida) == list:
            salida_table(1, salida)
        else:
            salida_table(2, salida)
    else:
        salida_table(2, "PARSER ERROR")
Пример #26
0
def procesar_if_elseif(instr, ts):
    val = resolver_expreision_logica(instr.expLogica, ts)
    if val:
        ts_local = TS.TablaDeSimbolos(ts.simbolos, ts.funciones)
        return procesar_instrucciones(instr.instrucciones, ts_local)
    else:
        if isinstance(instr.elseif, If):
            ret = procesar_if(instr.elseif, ts)
            if ret is not None:
                return ret
        elif isinstance(instr.elseif, IfElse):
            ret = procesar_if_else(instr.elseif, ts)
            if ret is not None:
                return ret
        elif isinstance(instr.elseif, IfElseIf):
            ret = procesar_if_elseif(instr.elseif, ts)
            if ret is not None:
                return ret
Пример #27
0
 def procesar_funcion25(self):
     global instrucciones_Global, tc_global1, ts_global1, listaErrores, erroressss, ts_globalIndex1
     instrucciones = g.parse(
         'insert into tbbodega ( idbodega,bodega ) values (     2    ,   \'BODEGA ZONA 12\'    );'
     )
     erroressss = ErrorHTML()
     if erroressss.getList() == []:
         instrucciones_Global = instrucciones
         ts_global = TS.TablaDeSimbolos()
         ts_globalIndex = TSINDEX.TablaDeSimbolos()
         tc_global = TC.TablaDeTipos()
         tc_global1 = tc_global
         ts_global1 = ts_global
         ts_globalIndex1 = ts_globalIndex
         salida = procesar_instrucciones(instrucciones, ts_global,
                                         tc_global, ts_globalIndex)
         return salida
     else:
         return 'Parser Error'
Пример #28
0
 def procesar_funcion5(self):
     global instrucciones_Global, tc_global1, ts_global1, listaErrores, erroressss, ts_globalIndex1
     instrucciones = g.parse(
         ' CREATE UNIQUE INDEX idx_califica ON tbCalificacion  (  idcalifica  ) ;'
     )
     erroressss = ErrorHTML()
     if erroressss.getList() == []:
         instrucciones_Global = instrucciones
         ts_global = TS.TablaDeSimbolos()
         ts_globalIndex = TSINDEX.TablaDeSimbolos()
         tc_global = TC.TablaDeTipos()
         tc_global1 = tc_global
         ts_global1 = ts_global
         ts_globalIndex1 = ts_globalIndex
         salida = procesar_instrucciones(instrucciones, ts_global,
                                         tc_global, ts_globalIndex)
         return salida
     else:
         return 'Parser Error'
Пример #29
0
 def procesar_funcion20(self):
     global instrucciones_Global, tc_global1, ts_global1, listaErrores, erroressss, ts_globalIndex1
     instrucciones = g.parse(
         'insert into tbCalificacion values (     4    ,   \'Valida Store Procedure\'   ,    5     );'
     )
     erroressss = ErrorHTML()
     if erroressss.getList() == []:
         instrucciones_Global = instrucciones
         ts_global = TS.TablaDeSimbolos()
         ts_globalIndex = TSINDEX.TablaDeSimbolos()
         tc_global = TC.TablaDeTipos()
         tc_global1 = tc_global
         ts_global1 = ts_global
         ts_globalIndex1 = ts_globalIndex
         salida = procesar_instrucciones(instrucciones, ts_global,
                                         tc_global, ts_globalIndex)
         return salida
     else:
         return 'Parser Error'
Пример #30
0
 def procesar_funcion11(self):
     global instrucciones_Global, tc_global1, ts_global1, listaErrores, erroressss, ts_globalIndex1
     instrucciones = g.parse(
         'INSERT INTO tbProducto values (     6    ,   \'Laptop HP\'   , now ( ) ,    1     );'
     )
     erroressss = ErrorHTML()
     if erroressss.getList() == []:
         instrucciones_Global = instrucciones
         ts_global = TS.TablaDeSimbolos()
         ts_globalIndex = TSINDEX.TablaDeSimbolos()
         tc_global = TC.TablaDeTipos()
         tc_global1 = tc_global
         ts_global1 = ts_global
         ts_globalIndex1 = ts_globalIndex
         salida = procesar_instrucciones(instrucciones, ts_global,
                                         tc_global, ts_globalIndex)
         return salida
     else:
         return 'Parser Error'