PATRON INTERPRETER

Motivación:
A veces es conveniente representar un problema, como palabras de algún lenguaje sencillo.  Éste patrón describe cómo  definir la representación de una gramática, representar palabras del lenguaje y cómo interpretarlas.  

Estructura:

Este patrón utiliza una Clase para representar cada Regla de la Gramática, siendo los símbolos del lado izquierdo de cada regla una Instancia de la Clase. Además Cada Expresión Regular definida por esta gramática puede ser representada mediante un Árbol Abstracto de Sintaxis que se elabora a partir de cada Instancia de la Clase. 

Participantes:

  • AbstractExpression

Declara una operación abstracta del intérprete, común a todos los nodos en el árbol de abstracto sintaxis.

 

  • TerminalExpression

Implementa una operación del intérprete asociada  con los símbolos terminales de la gramática.

Requiere una instancia para terminar los símbolos en las sentencias.

 

  • NonterminalExpression

Una clase como esta es requerida para todas las reglas R ::= R1 R2 ... Rn en la gramática.

Mantiene instacias de las variables de tipo AbstractExpression

 Para cada uno de los símbolos de R1  a través de Rn.

Implementa una operación del interprete para símbolos no terminales en la gramática. Típicamente el interprete llama así mismo recursivamente en las variables representadas de R1 a través de Rn.

 

  • Context:

Contiene la información global para la interpretación.

  • Client:

Construye o da la sintaxis del árbol abstracto representando una sentencia particular en el lenguaje que el programador define. La sintaxis del árbol abstracto reúne instancias de NonterminalExpression y clases TerminalExpressione.

Invoca operaciones del interprete.

Referencias:

No hay comentarios:

Publicar un comentario