Interpreter
Architecture 🔴 SeniorDé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.