Interpreter

Architecture 🔴 Senior

Définition

Définit une représentation grammaticale pour un langage et un interpréteur pour évaluer ses expressions. Utilisée pour les DSL.

Analogie

Un traducteur humain : il comprend la grammaire de la langue source et produit l'équivalent 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 règles métier, parseurs d'expressions mathématiques, langages de requêtes.

Anti-pattern

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

← → au clavier pour passer d'une fiche à l'autre