ESPRESSIONI ARITMETICHE E PATTERN VISITOR

di il
1 risposte

ESPRESSIONI ARITMETICHE E PATTERN VISITOR

Ciao ragazzi, avrei bisogno di una mano. Ho il seguente progetto da svolgere

1. Espressione aritmetica intera con contesto

È assegnata la seguente grammatica EBNF di un “linguaggetto” per espressioni aritmetiche intere, in presenza delle usuali regole di precedenza degli operatori.

<espressione>::=<termine>{<addop><termine>}

<termine>::=<fattore>{<mulop><fattore>}

<fattore>::=<costante>|<variabile>|(<espressione>)

<costante>::=<interosenzasegno>

<variabile>::=<identificatore>

<interosenzasegno>::=<cifra>{<cifra>}

<identificatore>::=<lettera>{<lettera>|<cifra>}

<cifra>::=0|…|9

<lettera>::=a|…|z|A|…|Z

<addop>::=+|-

<mulop>::=*|/

Si devono utilizzare i pattern Composite, Builder (a discesa ricorsiva) e Visitor. Detta Espressione la classe base del composite, occorre prevedere almeno i seguenti visitor:

* per la valutazione dell’espressione: metodo di innesco

int valuta( Espression e, Contesto c );

* per la sostituzione di una variabile con un’assegnata espressione: metodo di innesco

Espressione rimpiazza( Espressione e, Variabile v, Espressione target );

* per la copia dell’espressione: metodo di innesco

Espressione copia( Espressione e );

Il metodo di innesco del visitor è responsabile di far partire il processo sull’espressione e ricevuta parametricamente. il metodo valuta(…) calcola il valore dell’albero composita risolvendo le variabili nel contesto c. Il valore dell’espressione è quindi ritornato. Il contesto mantiene coppie <nome_variabile,valore> in cui il nome di una variabile è associato al suo valore. Una variabile non presente nel contesto si valuta a 0. Il contenuto di un oggetto contesto deve basarsi su un file di proprietà di nome contesto.properties, da preparare con un comune editor e rendere disponibile in una directory del file system.

Il metodo rimpiazza(…) costruisce una copia dell’espressione e nella quale la variabile indicata da v è rimpiazzata dall’espressione target fornita parametricamente.

Il metodo copia(…) restituisce una copia dell’espressione e.

Altri visitor devono consentire la stampa in formato infisso e postfisso dell’espressione.



Secondo voi i tre visitor per valutare,rimpiazzare e copiare sono collegati fra loro? E in caso affermativo, dovrei "innestarli"?

1 Risposte

  • Re: ESPRESSIONI ARITMETICHE E PATTERN VISITOR

    Ciao, adesso ho a che fare pure io con questo progetto...i visitor di valutazione e di stampa li ho implementati ma adesso sono bloccato su quelli di rimpiazzo e di copia...avrei pensato subito al pattern prototype dato che credo si tratti di realizzare una "deep copy" dell'espressione passata come parametro...tu che approccio hai usato?
Devi accedere o registrarti per scrivere nel forum
1 risposte