Parsing e valutazione di espressioni in .NET

Questa sera sono tornato su un progetto di qualche mese fa relativo all'interpretazione ed alla valutazione di espressioni.

La cosa interessante al momento della progettazione fu l'assoluta mancanza di specifiche e vincoli puntuali riguardo al tipo di espressioni. Mi spiego meglio: le espressioni sono contenute all'interno di un DB e possono evolvere in base ai "desideri" del cliente. In pratica si va dalla banale (ed inutile)

(8 + 4) / 2

alla più elaborata

GeoAvg( GetMinInterestRate(), GetMaxInterestRate() )

e così via.

Il problema quindi si scompone in:

  • parsing
  • valutazione

Per il primo problema mi sono affidato al GOLD parser di Devin Cook. Le cose belle di questo parser sono la modularità, la flessibilità e la disponibilità di engine sviluppati in molti linguaggi diversi.

Per il secondo punto ho usato pesantemente reflection, che mi permette di implementare all'interno di assembly di supporto le funzioni che il cliente decide di inventarsi; questi plugin vengono caricati da un assembly principale che gestisce l'intero processo di valutazione.

Nelle prossime settimane vorrei pubblicare qualche notizia in più riguardo alle problematiche che ho dovuto affrontare (e risolvere); questo post serve anche a capire quanti sviluppatori sono interessati al problema, quindi aspetto vostri commenti.

Ciao!

powered by IMHO 1.2

posted @ mercoledì 10 agosto 2005 01:59

Print