Interpreter

Architecture 🔴 Senior

Definition

Definit une representation grammaticale pour un langage et un interpreteur pour evaluer ses expressions. Utilisee pour les DSL.

Analogie

Un traducteur humain : il comprend la grammaire de la langue source et produit l'equivalent dans la langue cible.

Exemple de code

class NumberExpr {
  constructor(val) { this.val = val; }
  interpret() { return this.val; }
}
class AddExpr {
  constructor(l, r) { this.l = l; this.r = r; }
  interpret() { return this.l.interpret() + this.r.interpret(); }
}

Cas d'usage

Moteurs de regles metier, parseurs d'expressions mathematiques, langages de requetes.

Anti-pattern

Utiliser ce pattern pour un langage complexe — mieux vaut un vrai parser generator.
#architecture#interview#gof#behavioral