def p_fondo(p): '''fondo : C Fondo | vacia''' if (len(p) == 3): sC = [209, -1, -1, 1] else: sC = [209, -1, -1, -1] avail.append_quad(sC)
def p_fondo(p): '''fondo : C Fondo | vacia''' if(len(p) == 3): sC = [209, -1, -1, 1] else: sC = [209, -1, -1, -1] avail.append_quad(sC)
def p_prog(p): '''prog : PROG prog1 princ AC locales Bloque CC''' temp = [(void_val - 1000), (entero_val - 2000), (flotante_val - 3000)] temp.extend(avail.get_temporal_dirs()) direc["princ"] = temp if ("globales" in direc): temp = direc["globales"] temp.pop(0) direc["globales"] = temp sC = ['ENDPROG', -1, -1, -1] avail.append_quad(sC)
def p_prog(p): '''prog : PROG prog1 princ AC locales Bloque CC''' temp = [(void_val-1000), (entero_val-2000), (flotante_val-3000)] temp.extend(avail.get_temporal_dirs()) direc["princ"] = temp if("globales" in direc): temp = direc["globales"] temp.pop(0) direc["globales"] = temp sC = ['ENDPROG', -1, -1, -1] avail.append_quad(sC)
def p_Texto(p): '''Texto : LA AP STR CP PC''' global void_val, cnst_void_val sub = 1 start = void_val - 1000 strDir = void_val + (avail.getBloque() * 10000) word = p[3] while sub < len(word)-1: if word[sub] not in cnst: cnst[word[sub]] = cnst_void_val cnst_void_val += 1 sC = ['101', cnst[word[sub]], -1, (void_val + (avail.getBloque() * 10000))] void_val += 1 avail.append_quad(sC) sub += 1 finish = void_val - 1000 -1 sC = ['208', strDir , start, finish] avail.append_quad(sC)
def p_Texto(p): '''Texto : LA AP STR CP PC''' global void_val, cnst_void_val sub = 1 start = void_val - 1000 strDir = void_val + (avail.getBloque() * 10000) word = p[3] while sub < len(word) - 1: if word[sub] not in cnst: cnst[word[sub]] = cnst_void_val cnst_void_val += 1 sC = [ '101', cnst[word[sub]], -1, (void_val + (avail.getBloque() * 10000)) ] void_val += 1 avail.append_quad(sC) sub += 1 finish = void_val - 1000 - 1 sC = ['208', strDir, start, finish] avail.append_quad(sC)