Interpreter
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Según el libro "Patrones de Diseño" el patrón Interpreter "dado un lenguaje, define una representación de su gramática junto con un intérprete que usa dicha representación para interpretar sentencias del lenguaje".
ExpresionAbstracta:
declara una operación abstracta interpretar que es común a todos los nodos del árbol de sintaxis abstracto.
ExpresionTerminal:
implementa una operación interpretar asociada con los símbolos terminales de la gramática.
se necesita una variable de este tipo de dato para cada símbolo terminal de la sentencia.
ExpresionNoTerminal:
por cada regla de la gramática debe haber uno de estos tipos de datos.
mantiene variables de tipo ExpresionAbstracta para cada uno de los símbolos de cada regla.
Contexto:
contiene información que es global al intérprete.
Cliente:
construye (o recibe) un árbol sintáctico abstracto que representa una determinada sentencia del lenguaje definido por la gramática. Este árbol sintáctico abstracto está formado por variables del tipo de dato ExpresionNoTerminal y ExpresionTerminal.
invoca a la operación interpretar.
No se observan impedimentos y/o modificaciones de la estructura original del patrón para su implementación en Go.
La ExpresionAbstracta se define como una interfaz por simplificación.
En este ejemplo queremos interpretar distintas expresiones lógicas: AND y OR en base a palabras definidas en un contexto.
Implementación:
Se puede probar la implementación del patrón de la siguiente forma:
|
Atención: Esta publicación se encuentra abandonada. Puede acceder a la versión vigente en