Programmazione orientata agli oggetti in ANSI-C. Usare le variabili

Programmazione orientata agli oggetti in ANSI-C. Usare le variabili

Una variabile prende parte ad un’operazione in due modi: il suo valore viene usato come operando in un’espressione oppure il valore di un’espressione viene assegnato alla variabile stessa. La prima operazione è una semplice estensione della funzione factor() parte del riconoscitore illustrato in un altro articolo:

static void * factor (void)
{ void * result;
...
switch (token) {
case VAR:
result = symbol;
break;
...

VAR è un valore unico che screen() pone in token quando un identificatore idoneo viene trovato. Informazioni aggiuntive circa l’identificatore vengono inserite nella variabile globale symbol. In questo caso symbol contiene un nodo che rappresenta la variabile come una foglia nell’albero dell’espressione. Screen() trova la variabile nella tabella dei simboli o usa la descrizione VAR per crearla.

Riconoscere un assegnazione è un po’ più complicato. Il nostro calcolatore è facile da usare se consentiamo due tipi di istruzioni con la sintassi seguente:

asgn : sum
| VAR = asgn
Sfortunatamente, VAR può anche apparire al termine sinistro di una somma, ossia non è immediatamente chiaro come riconoscere le assegnazioni in stile C con la nostra tecnica ricorsiva. Poiché vogliamo imparare a lavorare con le keywords comunque, dobbiamo impostare la seguente grammatica:
stmt : sum
| LET VAR = sum

Nel programma principale si chiama stmt() al posto di sum() e il nostro riconoscitore è pronto per gestire le variabili. Assign è una nuova descrizione di tipo per un nodo che calcola il valore di una somma e lo assegna ad una variabile.

Leave a Reply