viernes, 29 de mayo de 2009

Interpreter

Propósito
Definir un intérprete para un lenguaje.
Aplicabilidad
Use el patrón Interpreter cuando la eficiencia no sea un factor tan fundamental, cuando haya que interpretar un lenguaje sencillo, cuando la solución de un problema consiga ser formulada en ese lenguaje.
Implementación
El patrón Interpreter necesita de los siguientes elementos:
•    Expression: La interfaz a travçes de la cual el cliente interactçua con las expresiones.
•    TerminalExpression: La implementaciçon de la interfaz Expression para nodos terminales en la gramçatica y el carbol de sintaxis.
•    NonTerminalExpression: La otra implementación de la interfaz Expression para nodos no terminales de la gramática y el árbol de sintaxis.
•    Context: El contenedor de la informaciçon que se necesita en distintos lugares del interpreter.
•    Cliente: Construye o destruye o recibe una intancia de un árbol de sintaxis abstracta.
Ventajas e Inconvenientes
Se puede cambiar de forma cómoda el intérprete para reflejar los cambios en la gramática, además las expresiones son reutilizables para otros fines. Se pueden añadir métodos a la interfaz para ampliar la funcionalidad de las expresiones.
Use el patrón Interpreter cuando la gramática es muy grande y pueda ser difícil implantar el árbol de la sintaxis ya que no esta definido en el patrón.
Patrones Relacionados
•    Composite: La forma de las expresiones interpretadas se basa en Composite usando nodos y hojas, y nodos rama.
•    Flyweight: Se puede emplear en algunas de las expresiones, para disminuir la cantidad de objetos similares.
•    Iterator: Se implementa para recorrer el árbol de sintaxis y sus nodos.
•    Visitor: Cuando este patrón se implementa Interpreter adquiere flexibilidad.

No hay comentarios:

Publicar un comentario