- Modifica dell'ambiente
void Aggiungi_Funzione(IDENT funz, IDENT param, ESPRESSIONE cor)
/*aggiunge a Funzioni la definizione della funzione funz con
parametro formale param e corpo cor*/
{
AMBIENTE Funzioni1 = (AMBIENTE)malloc(sizeof(struct AMB));
Funzioni1 -> Corpo = cor;
Copia_Ident(Funzioni1 -> Funzione,funz);
Copia_Ident(Funzioni1 -> Parametro_Formale,param);
Funzioni1 -> Next = Funzioni;
Funzioni = Funzioni1;
}
- Recupero del parametro formale di una funzione
void Parametro_Formale(IDENT funz, IDENT par)
/*ritorna il parametro formale della funzione funz come registrato in Funzioni,
nel parametro variabile par,
si assume che ci sia sempre una definizione per funz in Funzioni */
{
AMBIENTE Funzioni1 = Funzioni;
while(Funzioni1 != NULL)
if(Uguali_Ident(Funzioni1 -> Funzione,funz)){
Copia_Ident(par, Funzioni1 -> Parametro_Formale);
return;
}
else
Funzioni1 = Funzioni1 -> Next;
}
- Recupero del corpo di una funzione
ESPRESSIONE Corpo(IDENT funz)
/*ritorna il corpo della funzione funz come registrato in Funzioni,
si assume che ci sia sempre una definizione per funz in Funzioni */
{
AMBIENTE Funzioni1 = Funzioni;
while(Funzioni1 != NULL)
if(Uguali_Ident(Funzioni1 -> Funzione,funz))
return Funzioni1 -> Corpo;
else
Funzioni1 = Funzioni1 -> Next;
}
A questo punto abbiamo sviluppato due file che faranno parte del
programma, l'interfaccia e il body di questo modulo: