Esempio n. 1
0
def p_Asignacion(p):
    '''Asignacion : faID Factor5 Asignacion2'''
    ID = avail.IDPila_pop()
    if (idF == "asig"):
        TDim = avail.DPila_pop()
        variables_declaradas(ID)
        if (avail.DPila_pop()):
            if (TDim):
                par = avail.OPila_pop()
                par2 = avail.OPila_pop()
                avail.OPila_push(par)
                avail.TPila_push(tipo_variable(ID, "var"))
                avail.OPila_push(dir_var(ID))
                avail.OPila_push(par2)
                avail.dim(dimension(ID), avail.OPila_pop())
                avail.asign(avail.OPila_pop())
            else:
                par = avail.OPila_pop()
                par2 = avail.OPila_pop()
                par3 = avail.OPila_pop()
                avail.OPila_push(par)
                avail.OPila_push(par2)
                avail.TPila_push(tipo_variable(ID, "var"))
                avail.OPila_push(dir_var(ID))
                avail.OPila_push(par3)
                avail.dmT(dimension(ID), avail.OPila_pop())
                avail.asign(avail.OPila_pop())
                avail.asign(avail.OPila_pop())
        else:
            avail.asign(dir_var(ID))
    else:
        if (ID not in direc):
            print "Funcion no declarada", ID
            sys.exit(0)
        else:
            if ((len(direc[ID][0])) != len(CHF)):
                print "Error de llamada de funcion, ", ID
                sys.error(0)
            else:
                cont = 0
                for key in direc[ID][0]:
                    if (direc[ID][0][key][0] != CHF[cont]):

                        print "Error de tipo de llamada de funcion"
                        sys.error(0)
                    cont += 1
    CHF[:] = []
Esempio n. 2
0
def p_Asignacion(p):
	'''Asignacion : faID Factor5 Asignacion2'''
	ID = avail.IDPila_pop()
	if(idF == "asig"):
		TDim = avail.DPila_pop()		
		variables_declaradas(ID)
		if(avail.DPila_pop()):
			if(TDim):
				par = avail.OPila_pop()
				par2 = avail.OPila_pop()
				avail.OPila_push(par)
				avail.TPila_push(tipo_variable(ID, "var"))
				avail.OPila_push(dir_var(ID))
				avail.OPila_push(par2)
				avail.dim(dimension(ID), avail.OPila_pop())
				avail.asign(avail.OPila_pop())
			else:
				par = avail.OPila_pop()
				par2 = avail.OPila_pop()
				par3 = avail.OPila_pop()
				avail.OPila_push(par)
				avail.OPila_push(par2)
				avail.TPila_push(tipo_variable(ID, "var"))
				avail.OPila_push(dir_var(ID))
				avail.OPila_push(par3)
				avail.dmT(dimension(ID), avail.OPila_pop())
				avail.asign(avail.OPila_pop())
				avail.asign(avail.OPila_pop())
		else:
			avail.asign(dir_var(ID))
	else:
		if(ID not in direc):
			print "Funcion no declarada", ID
			sys.exit(0)	
		else:
			if((len(direc[ID][0])) != len(CHF)):
				print "Error de llamada de funcion, ", ID
				sys.error(0)
			else:
				cont = 0
				for key in direc[ID][0]:
					if(direc[ID][0][key][0] != CHF[cont]):
						
						print "Error de tipo de llamada de funcion"
						sys.error(0)
					cont += 1 
	CHF[:] = []
Esempio n. 3
0
def p_Factor4(p):
    '''Factor4 : varCte
| faID Factor5'''
    if (len(p) == 3):
        ID = avail.IDPila_pop()
        DimM = avail.DPila_pop()
        if (DimM):
            apuntador = avail.OPila_pop()
        variables_declaradas(ID)
        avail.TPila_push(tipo_variable(ID, "var"))
        avail.OPila_push(dir_var(ID))
        if (DimM):
            avail.dim(dimension(ID), apuntador)
        if not DimM:
            if avail.DPila_pop():
                avail.OPila_pop()
                avail.TPila_pop()
Esempio n. 4
0
def p_Factor4(p):
	'''Factor4 : varCte
| faID Factor5'''
	if(len(p) == 3):
		ID = avail.IDPila_pop()
		DimM = avail.DPila_pop()
		if(DimM):		
			apuntador = avail.OPila_pop()
		variables_declaradas(ID)
		avail.TPila_push(tipo_variable(ID, "var"))
		avail.OPila_push(dir_var(ID))
		if(DimM):
			avail.dim(dimension(ID), apuntador)
		if not DimM:
			if avail.DPila_pop():
				avail.OPila_pop()
				avail.TPila_pop()