- BASIC_IO (operazioni elementari di I/O)
void A_Capo_Lettura(vod)
/*avanza la lettura sul file ingresso.txt alla riga successiva*/
void A_Capo_Stampa(vod)
/*avanza la scrittura sul file uscita.txt alla riga successiva*/
char Look_Char(vod)
/*ritorna il prossimo carattere sul file ingresso.txt,
non avanza la lettura
se la linea è finita ritorna '/0'*/
char Get_Char(vod)
/*ritorna il prossimo carattere sul file ingresso.txt,
avanza la lettura
se la linea è finita va a capo*/
void Salta(char c)
/*avanza la lettura sul file ingresso.txt fino a superare
la prossima occorenza di c */
void Salta_Blanks(void)
/*avanza la lettura sul file ingresso.txt fino a raggiungere
il primo carattere diverso dal ' ' sulla linea corrente,
altrimenti raggiunge la fine della linea */
void Print_Char(char c)
/*scrive il carattere c sul file `uscita.txt'*/
- REALI_ENORMI (il tipo di dato reali enormi)
typedef char CIFRE[50];
typedef REALE_ENORME struct
{ char Segno;
CIFRE Decimale, Intera;
};
void Stampa_Reale_Enorme(REALE_ENORME re);
REALE_ENORME Leggi_Reale_Enorme(void);
REALE_ENORME Somma(REALE_ENORME re1, REALE_ENORME re2);
REALE_ENORME Prodotto(REALE_ENORME re1, REALE_ENORME re2);
REALE_ENORME Differenza(REALE_ENORME re1, REALE_ENORME re2);
- IDENT (il tipo di dato identificatori)
typedef char IDENT[21];
void Leggi_Ident(IDENT id);
void Stampa_Ident(IDENT id);
int Uguali_Ident(IDENT id1, IDENT id2);
void Copia_Ident(IDENT id1, IDENT id2);
/*copia id2 in id1*/
- ESPRESSIONI (il tipo di dato espressioni)
typedef ... ESPRESSIONE
ESPRESSIONE Leggi_Espressione(void);
int E_Identificatore(ESPRESSIONE esp);
int E_Valore(ESPRESSIONE esp);
int E_Chiamata_Funzione(ESPRESSIONE esp);
int E_Applicazione(ESPRESSIONE esp);
/*controllano se un'espressione è rispettivamente un identificatore,
un valore di tipo reale enorme, una chiamata di funzione o un'applicazione di un operatore.*/
void Ident(ESPRESSIONE esp, IDENT id);
REALE_ENORME Valore(ESPRESSIONE esp);
ESPRESSIONE Parametro_Attuale(ESPRESSIONE esp);
void Funzione(ESPRESSIONE esp, IDENT funz);
ESPRESSIONE Primo_Arg(ESPRESSIONE esp);
ESPRESSIONE Secondo_Arg(ESPRESSIONE esp);
char Operatore(ESPRESSIONE esp);
/*ritornano le varie parti di un'espressione;
tale espressione deve essere del tipo giusto, cioè deve avere tale parte*/
- MEMORIA (le memorie per immagazzinare i valori delle costanti e
dei parametri delle funzioni)
typedef ... MEMORIA
const MEMORIA Vuota = ...;
MEMORIA Valori_Costanti = Vuota;
/*variabile globale che contiene i valori delle costanti*/
MEMORIA Modifica(IDENT id, REALE_ENORME re, MEMORIA m)
/*ritorna la memoria ottenuta modificando m in modo che il valore di id sia re*/
REALE_ENORME Valore_Di(MEMORIA m, IDENT id)
/*ritorna il valore associato ad id in m,
si assume che ci sia sempre un'associazione per id in m */
...
- AMBIENTE (gli ambienti per immagazzinare le definizioni delle funzioni)
typedef ... AMBIENTE
const AMBIENTE Vuoto = ...;
AMBIENTE Funzioni = Vuoto;
/*variabile globale che contiene le definizioni delle funzioni*/
void Aggiungi_Funzione(IDENT funz, IDENT param, ESPRESSIONE cor)
/*aggiunge a Funzioni la definizione della funzione funz con
parametro formale param e corpo cor*/
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 */
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 */
...