UGIdotNET Home UGIdotNET Home
UGIdotNET Blogs UGIdotNET Blogs
UGIdotNET Forum UGIdotNET Forum
MSDN Architetti MSDN Architetti
Visualizza Modifiche Visualizza Modifiche
Modifica Modifica
Stampa Stampa
Modifiche Recenti Modifiche Recenti
Sottoscrizioni Sottoscrizioni
Ufficio Oggetti Smarriti Ufficio Oggetti Smarriti
Cerca Riferimenti Cerca Riferimenti
Rinomina Rinomina
Cerca

Versioni

06/05/2008 17.22.55
-130.136.4.218
06/05/2008 17.22.21
-130.136.4.218
06/05/2008 17.22.10
-130.136.4.218
05/04/2006 19.30.28
LucaMinudel-193.42.138.33
01/01/2006 16.11.11
LucaMinudel-151.47.145.192
Elenco completo versioni Elenco completo versioni
Pattern Interpreter
.
Summary Un design pattern che definisce una rappresentazione per la grammatica di un linguaggio e per la sua interpretazione.

Conosciuto anche come

No ha altri nomi.

Intento

Il design pattern Interpreter include la capacità di interpretare elementi di un linguaggio in un programma perché definisce una rappresentazione per la grammatica del linguaggio a beneficio di un interprete che usa la rappresentazione per interpretare frasi prodotte in quel linguaggio.

Il design pattern Interpreter è complesso.

Le classi derivate da AbstractExpression sono definite a design-time attraverso l'ereditarietà quindi questo design pattern è classificato rispetto allo scopo (vedi ClassificazioneDeiDesignPattern#ClassiOggetti) come rivolto alle classi. Rispetto al fine questo design pattern è classificato tra i ClassificazioneDeiDesignPattern#Comportamentali.

Diagramma UML

Un'altro diagramma equivalente qui .

Motivazione

Quando un problema particolare si presenta spesso con un certo numero di varianti può essere conveniente descrivere il problema con un linguaggio (le classi derivate da AbstractExpression e organizzate in TerminalExpression e NonterminalExpression) e risolvere i vari casi con un interprete del linguaggio (Client). Ciò si ottiene applicando il design pattern Interpreter.

Esempi d'uso in .NET

Nessun esempio.

Note sulla implementazione in .NET

Del codice .NET di esempio è disponibile qui .

Relazione con altri design pattern

Il PatternFlyweight mostra come condividere i simboli terminali.

Il PatternComposite si applica all'albero astratto della sintassi.

Il PatternIterator permette di attraversare l'albero astratto della sintassi.

Il PatternVisitor può essere usato per i comportamenti di ogni espressione del linguaggio.

Vedi la mappa della RelazioneTraDesignPattern.

Approfondimenti

Il design pattern Interpreter è conveniente quando:

  • la grammatica è semplice,
  • l'efficienza (consumo di CPU e RAM) non è un aspetto critico.

Rende facile definire la grammatica, cambiarla e aggiungerci nuove espressioni mentre rende difficile gestire la grammatica quando diventa complessa.

Domande di approfondimento

  • Oltre ad usare questo design pattern per interpretare un linguaggio di programmazione, quali altri usi sono possibili e come differiscono dalla semplice lettura di una struttura dati da uno stream e dalla sua rappresentazione in memoria?

Link

VediAnche CatalogoDeiDesignPattern

UGIdotNETWiki

UGIdotNETWiki è il WikiWiki italiano dedicato a .NET

Se è la prima volta che senti parlare di Wiki, leggi il BenvenutoAiVisitatori e WikiInUnMinuto, oppure il ManualePassoPassoDelWiki.

Argomenti Recenti

  • PatternInterpreter
© 2008 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali