Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)