Home
Accesso / Registrazione
 di 

Programmazione orientata agli oggetti in ANSI-C. Programmazione Savvy. Il processore

Programmazione orientata agli oggetti in ANSI-C. Programmazione Savvy. Il processore

Come si analizza un'espressione. Se vogliamo elaborare valori numerici e semplice aritmetica, possiamo estendere le funzioni di riconoscimento e calcolare i risultati non appena riconosciamo gli operatori e gli operandi: sum() si aspetterebbe un risultato di tipo double da ogni chiamata a product(), provvede a calcolare l'addizione o la sottrazione il più presto possibile e restituisce il risultato come un valore double.

Se vogliamo costruire un sistema che è in grado di gestire una espressione molto complicata, abbiamo la necessità di memorizzare espressioni per la loro successiva analisi. In questo caso, non solo provvediamo ad eseguire le operazioni aritmetiche, ma possiamo usare le espressioni memorizzate come funzioni utente all'interno di altre espressioni. Tutto ciò di cui abbiamo bisogno è un modo generale e ragionevole per rappresentare un'espressione. La tecnica convenzionale consiste nell'usare un albero binario e memorizzare token in ogni nodo:

void sum (void)
{
product();
for (;;)
{ switch (token) {
case ’+’:
case ’—’:
scan(0), product(); continue;
}
return;
}
}

Ciò non è molto flessibile, purtroppo. Abbiamo bisogno di introdurre una union per creare un nodo in cui possiamo memorizzare un valore numerico e sprechiamo così spazio nei nodi nel rappresentare operatori unari. Inoltre process() e delete() conterranno istruzioni switch che crescono con ogni nuovo token.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 5 utenti e 52 visitatori collegati.

Ultimi Commenti