Programmazione orientata agli oggetti in ANSI-C. Un’altra sottoclasse – Le costanti

Programmazione orientata agli oggetti in ANSI-C. Un'altra sottoclasse - Le costanti

A chi piace digitare il valore di pi greco o di altre costanti matematiche? Ispirandoci alla soluzione proposta da Kernighan e Pike [K&P94] predefiniamo alcune costanti per il nostro calcolatore. La seguente funzione deve essere chiamata durante l’inizializzazione del riconoscitore.

void initConst (void)
{ static const struct Var constants [] = { /* like hoc */
{ &_Var, "PI", CONST, 3.14159265358979323846 },
...
0 };
const struct Var * vp;
for (vp = constants; vp —> _.name; ++ vp)
install(vp);
}

Le variabili e le costanti sono più o meno le stesse: entrambe hanno nomi e valori e sono inserite nella tabella dei simboli, entrambe restituiscono il loro valore per essere usate in espressioni aritmetiche ed entrambe non dovrebbero essere cancellate.

Da notare però che non si effettuano assegnazioni a costanti, per natura propria delle costanti, così facciamo in modo di avere un nuovo valore per il token che definiremo CONST. Il riconoscitore lo accetterà in factor() proprio come fa con VAR ma non sarà permesso averlo come operatore sinistro in stmt().

Leave a Reply