Salve,
sto realizzando un progetto didattico relativo ad ingegneria del software.. Vi posto parte della traccia:
Si considera un semplice linguaggio per la formulazione di espressioni condizionali, ossia espressioni booleane i cui operandi sono generati da un confronto di due espressioni aritmetiche, con un operatore di relazione. Le espressioni aritmetiche si intendono costruite su numeri senza segno, manipolati dagli operatori addizione, sottrazione, moltiplicazione, divisione (quoziente), resto della divisione intera, elevamento a potenza. Nelle espressioni aritmetiche, l’elevamento a potenza è il più prioritario, seguono gli operatori moltiplicativi (moltiplicazione e divisione) ed infine quelli additivi (somma e sottrazione). Nelle espressioni booleane, NOT è l’operatore più prioritario, segue AND, quindi OR. Gli operatori di relazione sono più prioritari degli operatori booleani.
Esempi di espressioni condizionali:
a<=b && c>1 || a==4 che è equivalente a: (a<=b && c>1) || a==4
a%b==0 && (a>2 || b-12>0)
L’obiettivo del progetto, basato sui pattern Composite, Builder (ricorsivo) e Interpreter, è quello di acquisire da input un’espressione condizionale, farne l’analisi sintattica e costruire l’albero sintattico (composite) corrispondente. A partire dall’albero occorre valutare il risultato della condizione sulla base di un contesto o ambiente (fornito esternamente mediante un file properties), che stabilisce i valori delle variabili intere usate nelle espressioni aritmetiche (se una variabile non è presente nel contesto, si assume che il suo valore sia 0). Occorre altresì predisporre le operazioni di stampa in ordine simmetrico e postfisso del composite di una condizione.
Ho "progettato" una bozza di soluzione, costruendo l'albero sintattico tramite Composite, costruendo un'interfaccia generale Espressione e poi le sottoclassi Espressione Booleana ed EspressioneAritmetica ed infine le classi che rappresentano gli operatori finali And, od, Plus, minus ecc. Adesso vi chiedo, come posso costruire il composite con il builder ed interpreter?!!?!?!?

