BEHAVIORAL

Interpreter

Dato un linguaggio, definire una rappresentazione per la sua grammatica insieme a un interprete che usa la rappresentazione per interpretare frasi nel linguaggio.

Il Problema

Quando hai un linguaggio semplice da interpretare e puoi rappresentare le frasi come alberi sintattici.

La Soluzione

Definire grammatica del linguaggio. Creare classe per ogni regola grammaticale. Costruire albero sintattico e interpretarlo.

Struttura

AbstractExpression con interpret(). TerminalExpression e NonterminalExpression estendono AbstractExpression. Context contiene info globali.

Partecipanti:
AbstractExpression - interfaccia per interpret() operation
TerminalExpression - implementa interpret() per simboli terminali
NonterminalExpression - una classe per ogni regola
Context - contiene informazioni globali per interpreter
Esempi di Codice

Interpreter per Boolean Expressions

Interprete per espressioni booleane (AND, OR, NOT).

JAVASCRIPT
Loading...
Esempi nel Mondo Reale
SQL parsers
Regular expressions
Mathematical expression evaluators
Configuration file parsers
Template engines
Quando Usarlo
Quando hai grammatica semplice da interpretare
Quando efficienza non è priorità critica
Quando la grammatica è relativamente stabile
Quando vuoi rappresentare regole come oggetti
Quando NON Usarlo
Quando la grammatica è complessa (usa parser generator)
Quando serve alta performance
Quando la grammatica cambia frequentemente