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