Пример #1
0
def funcionIntermedia():
    global pila
    insts = pila.pop()
    nodo = g.parse(insts)
    raiz.hijos.append(nodo)
    ast.executeAST(nodo)
    ast.printOutputs()
    ast.printErrors()
    ast.generateTSReport()
    ast.erroresHTML()
Пример #2
0
    def ej_ascendente(self):
        global is_ascendente
        global mensajes
        global reporte_gramatical

        self.cleanTable()
        self.cleanTS()
        is_ascendente = True
        del mensajes[:]
        etiquetas = g_asc.parse(self.text.get_text())
        mensajes = g_asc.mensajes
        reporte_gramatical = g_asc.reporte_gramatical
        self.ejecutar(etiquetas)
Пример #3
0
    def ejecutar(self):

        #f = open("./prueba.txt", "r")
        #input = f.read()
        input = self.__editor.text()
        Raiz = gr.parse(input)
        #print(Raiz.produccion)

        acciones_parser = acciones(Raiz)
        acciones_parser.ejecutar(self.plainTextEdit)
        gr.reporte_de_errores_sintacticos()
        gr.reportegramatica()
        gr.reporte_de_errores_lexicos()
        self.plainTextEdit.appendPlainText(acciones_parser.error)
        #print(acciones_parser.imprimir)
        #self.plainTextEdit.setPlainText(acciones_parser.imprimir)
        #self.plainTextEdit.appendPlainText("PRUEBA APE")
        self.plainTextEdit_2.setHtml(acciones_parser.imprimir_tabla_simbolos())
Пример #4
0
    def analizar(self,editor,consola, output, errores):
        out = ''
        er = ''
        contador = 0
        if editor.get(1.0,END) != "\n":
            entrada = editor.get(1.0,'end')
            self.AST = g.parse(entrada)
            #print(len(self.AST.output))
            for e in self.AST.output:
                contador = contador + 1
                out += str(contador)+'. . . .\n' + str(e) +'. . . .' +'\n'
            output.insert('insert',out)
            contador = 0
            for a in self.AST.errors:
                contador = contador + 1
                er += str(contador) + '. . . .\n'+a.toString()+'. . . .' + '\n'
            errores.insert('insert', er)
            #print(entrada)
            self.AST.output[:] = []

        else:
            messagebox.showerror(message="Ingrese datos a analizar",title="TytusDB")
Пример #5
0
    def debuggear(self):
        global is_ascendente
        global mensajes
        global reporte_gramatical

        self.cleanTable()
        is_ascendente = True
        del mensajes[:]
        etiquetas = g_asc.parse(self.text.get_text())
        mensajes = g_asc.mensajes
        reporte_gramatical = g_asc.reporte_gramatical

        global ts_global
        if len(mensajes) > 0:
            self.consola.delete('1.0', END)
            self.consola.insert('1.0', '>>>>>Errores<<<<<')
            self.imprimir_errores()
            return

        ts_global = TS.TablaDeSimbolos()
        ts_global.reiniciar()

        for etiqueta in etiquetas:
            if not ts_global.addEtiqueta(etiqueta):
                mensajes.append(
                    Mensaje(
                        TIPO_MENSAJE.SEMANTICO, 'La etiqueta: ' +
                        etiqueta.identificador + ' ya existe.', 0, 0))

        etiqueta = ts_global.getEtiqueta('main')

        debugueando = True
        while (not (etiqueta is None)) and debugueando:

            bandera = False

            for instruccion in etiqueta.instrucciones:
                self.text.resaltar(instruccion.linea)
                res = instruccion.ejecutar(ts_global, mensajes)
                if isinstance(res, Etiqueta) or isinstance(instruccion, Exit):
                    etiqueta = res
                    bandera = True
                    debugueando = eg.ccbox(msg='Desea continuar debugueando',
                                           title='Debug')
                    self.text.deleteResaltar()
                    break

                salida = ""
                for mensaje in mensajes:
                    if mensaje.tipo_mensaje == TIPO_MENSAJE.LOG:
                        salida += str(mensaje.mensaje).replace('\\n', '\n')

                self.consola.delete('1.0', END)
                self.consola.insert('1.0', salida)
                self.imprimir_errores()
                self.imprimir_TS()

                debugueando = eg.ccbox(msg='Desea continuar debugueando',
                                       title='Debug')

                if not debugueando:
                    break
                self.text.deleteResaltar()

            if bandera:
                continue

            etiqueta = ts_global.getSiguiente()

        self.text.deleteResaltar()
        salida = ""
        for mensaje in mensajes:
            if mensaje.tipo_mensaje == TIPO_MENSAJE.LOG:
                salida += str(mensaje.mensaje).replace('\\n', '\n')

        self.consola.delete('1.0', END)
        self.consola.insert('1.0', salida)
        self.imprimir_errores()
Пример #6
0
import gramatica_asc as gr
import tablasimbolo as TS

from acciones import acciones

from PyQt5 import QtCore, QtGui, QtWidgets

import sys
sys.setrecursionlimit(10**6)

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

Raiz = gr.parse(input)
#print(Raiz)

acciones_parser = acciones(Raiz)
acciones_parser.ejecutar()
gr.reportegramatica()
print(acciones_parser.imprimir)
print(acciones_parser.error)
print(gr.reporte_de_errores_lexicos())
gr.reporte_de_errores_sintacticos()

#print("\n")
#print(acciones_parser.imprimir_tabla_simbolos())