Пример #1
0
def generarSentenciaCase(instruccion, ts):
    global cadenaTraduccion
    exp = generarExpresion(instruccion.exp, ts)
    etiquetaFinal = generarTemporalEtiqueta()
    for caso in instruccion.casos:
        if (caso.exp == None):
            ts_local = TS.TablaDeSimbolos(ts.simbolos)
            generarPrincipal(caso.sentencias, ts_local)
        else:
            exp2 = generarExpresion(caso.exp, ts)
            etiquetaFalso = generarTemporalEtiqueta()
            temporal = generarTemporalT()
            cadenaTraduccion += '\t\n'
            cadenaTraduccion += '\t' + str(temporal) + " = " + str(
                exp) + " != " + str(exp2) + ''
            cadenaTraduccion += '\t\n'
            cadenaTraduccion += '\tif ' + str(temporal) + ': goto. ' + str(
                etiquetaFalso) + ''
            ts_local = TS.TablaDeSimbolos(ts.simbolos)
            generarPrincipal(caso.sentencias, ts_local)
            cadenaTraduccion += '\t\n'
            cadenaTraduccion += '\tgoto. ' + etiquetaFinal + ''
            cadenaTraduccion += '\t\n'
            cadenaTraduccion += '\tlabel. ' + etiquetaFalso
    cadenaTraduccion += '\t\n'
    cadenaTraduccion += '\tlabel. ' + etiquetaFinal
Пример #2
0
def generarSentenciaIf(instruccion, ts, etiquetaFinal):
    global cadenaTraduccion
    temporal = generarExpresion(instruccion.exp, ts)
    etiquetaSi = generarTemporalEtiqueta()
    etiquetaSino = generarTemporalEtiqueta()
    if etiquetaFinal == None:
        etiquetaFinal = generarTemporalEtiqueta()
    cadenaTraduccion += '\t\n'
    cadenaTraduccion += '\tif  ' + str(temporal) + ' : goto. ' + str(
        etiquetaSi) + ''
    cadenaTraduccion += '\t\n'
    cadenaTraduccion += '\tgoto. ' + etiquetaSino + ''
    if isinstance(instruccion.sino, SentenciaIf):
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tlabel. ' + etiquetaSi
        ts_local = TS.TablaDeSimbolos(ts.simbolos)
        generarPrincipal(instruccion.si, ts_local)
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tgoto. ' + etiquetaFinal + ''
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tlabel. ' + etiquetaSino
        generarSentenciaIf(instruccion.sino, ts, etiquetaFinal)
    elif (instruccion.sino == None):
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tlabel. ' + etiquetaSi
        ts_local = TS.TablaDeSimbolos(ts.simbolos)
        generarPrincipal(instruccion.si, ts_local)
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tlabel. ' + etiquetaSino
    else:
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tlabel. ' + etiquetaSi
        ts_local = TS.TablaDeSimbolos(ts.simbolos)
        generarPrincipal(instruccion.si, ts_local)
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tgoto. ' + etiquetaFinal + ''
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tlabel. ' + etiquetaSino
        ts_local = TS.TablaDeSimbolos(ts.simbolos)
        generarPrincipal(instruccion.sino, ts_local)
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tlabel. ' + etiquetaFinal
Пример #3
0
def analizar(txt):
    global instrucciones_GlobalPL
    instruccionesPL = TRADUC.runC3D(txt)
    instrucciones_GlobalPL = instruccionesPL
    ts_globalPL = TSPL.TablaDeSimbolos()
    codigo3D = ""
    codigo3D = TRADUC.generarC3D(instruccionesPL, ts_globalPL)
    salida3D = open("./salida3D.py", "w")
    salida3D.write(codigo3D)
    salida3D.close()
    salida_table(2,'3D GENERADO CON EXITO')    
Пример #4
0
def analizar_select(e):
    global selected
    if my_text.selection_get():

        global instrucciones_GlobalPL
        selected = my_text.selection_get()
        instruccionesPL = TRADUC.runC3D(selected)
        instrucciones_GlobalPL = instruccionesPL
        ts_globalPL = TSPL.TablaDeSimbolos()
        codigo3D = ""
        codigo3D = TRADUC.generarC3D(instruccionesPL, ts_globalPL)
        salida3D = open("./salida3D.py", "w")
        salida3D.write(codigo3D)
        salida3D.close()
        salida_table(2,'3D GENERADO CON EXITO')
Пример #5
0
def analizar(txt):
    global instrucciones_GlobalPL
    instruccionesPL = TRADUC.runC3D(txt)

    if erroressss.getList() == []:
        instrucciones_GlobalPL = instruccionesPL
        ts_globalPL = TSPL.TablaDeSimbolos()
        codigo3D = ""
        codigo3D = TRADUC.generarC3D(instruccionesPL, ts_globalPL)
        salida3D = open("./salida3D.py", "w")
        salida3D.write(codigo3D)
        salida3D.close()
        salida_table(2, '3D GENERADO CON EXITO')
    else:
        salida_table(2, "PARSER ERROR")
Пример #6
0
def agregarFunciones():
    global tf, cadenaTraduccion, tf2
    for funcion in tf2.funciones:
        instruccion = tf2.obtener(funcion)
        tsTemp = TS.TablaDeSimbolos()
        if instruccion.parametros[0] != None:
            contador = 0
            for parametro in instruccion.parametros:
                simbolo = TS.Simbolo(parametro.id, parametro.tipo, getEmpty(parametro.tipo), instruccion.temporales[contador])
                tsTemp.agregar(simbolo)
                contador = contador + 1
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\t' + 'label. ' + str(instruccion.id)
        generarPrincipal(instruccion.instrucciones, tsTemp)
        cadenaTraduccion += '\t\n'
        cadenaTraduccion += '\tgoto. retorno'
Пример #7
0
import PLSQL.tsPLSQL as TS
import PLSQL.tfPLSQL as TF
from PLSQL.instruccionesPLSQL import *
from PLSQL.expresionesPLSQL import *
import PLSQL.gramaticaPLSQL as g
from PLSQL.report_astPLSQL import *
from PLSQL.report_optimizacionPLSQL import *


temporalT = 0
temporalA = 0
temporalV = 0
temporalE = 0
ts = TS.TablaDeSimbolos()
tf = TF.TablaDeFunciones()
cadenaTraduccion = ""
cadenaManejador = ""
cadenaFunciones = ""
contadorLlamadas = 0
gram = []
tablaSimbolos = []
tablaELexicos = []
tablaESintacticos = []
tablaOptimizacion = []

cadenaFuncionIntermedia = ""
numFuncionSQL = 0

def getGramatica():
    global gram
    return gram