Post

Interpreter

In Design Patterns on marzo 22, 2010 by poyblog Messo il tag: , ,

Intento:

Dato un linguaggio, il pattern definisce una rappresentazione della propria grammatica attraverso la quale vengono interpretate le sentenze di un linguaggio

Applicabilità:

Il pattern Interpreter è da utilizzare quando vi è un linguaggio da interpretare ed è possibile rappresentare le dichiarazioni dello stesso come alberi sintattici astratti. Interpeter vine sfruttato al meglio quando:

  • la grammatica è semplice. Infatti per grammatiche complesse la gerarchia delle classi generate sarebbe troppo complessa ed ingestibile
  • L’efficienza non deve essere un aspetto critico.

Partecipanti:

  • AbstractExpression → definisce una operazione Interpreter di tipo astratto che è comune a tutti i nodi nell’albero della sintassi
  • TerminalExpression → Implementa una operazione di interpretazione con simboli terminali nella sintassi, in più viene richiesta una istanza per ogni simbolo terminale della sintassi
  • NonTerminalExpression → ogni classe vine sfruttata per ogni ruolo gestito nella grammatica, vengono mantenute le variabili di istanziazione delle AbstractExpression; infine implementa un interprete per ogni simbolo non terminale della grammatica.
  • Context → contiene informazioni che sono globali per l’interprete
  • Client → costruisce una sintassi astratta che rappresenta una particolare sentenza in un linguaggio che la grammatica stessa definisce, e invoca l’operazione di interpretazione

Conseguenze:

  • E’ facile cambiare e(o estendere una grammatica, dato che il pattern utilizza le classi per rappresentare le regole della grammatica
  • Implementare la grammatica è più facile
  • Le grammatiche complesse sono difficili da mantenere
  • E’ possibile aggiungere nuovi modi per interpretare le espressioni.

Una Risposta a “Interpreter”

  1. [...] Interpreter [...]

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.