Archivo

Archivo para Noviembre 30, 2007

Patrones de Diseño

Noviembre 30, 2007 faustol 1 Comentario

Desarrollar software aparentemente es escribir unas líneas de código y hacer que funcione, realmente el proceso de desarrollo es complicado y los patrones de diseño nos ayudan a poder realizar dicha tarea de mejor forma.

Un patron de diseño segun Christopher Alexander

“describe un problema que ocurre una y otra vez en nuestro entorno, asi como la solución a ese problema, de tal modo que se pueda aplicar esta solución un millón de veces, sin hacer lo mismo dos veces”

Un patron contiene 4 elementos fundamentales:

  • Nombre del patron
  • Problema
  • Solución
  • Consecuencias

Los objetivos de los patrones son:

  • Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
  • Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
  • Formalizar un vocabulario común entre diseñadores.
  • Estandarizar el modo en que se realiza el diseño.
  • Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.

Estructura o plantilla de los patrones:

  • Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).
  • Clasificación del patrón: creacional, estructural o de comportamiento.
  • Intención: ¿Qué problema resuelve el patrón?
  • También conocido como: Otros nombres de uso común para el patrón.
  • Motivación: Escenario de ejemplo para la aplicación del patrón.
  • Aplicabilidad: Criterios de aplicabilidad del patrón.
  • Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.
  • Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.
  • Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.
  • Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.
  • Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.
  • Código de ejemplo: Código fuente ejemplo de implementación del patrón.
  • Usos conocidos: Ejemplos de sistemas reales que usan el patrón.
  • Patrones relacionados: Referencias cruzadas con otros patrones.

Estaré documentando mas sobre el tema.

Compactación de Tablas

Noviembre 30, 2007 faustol Deja un comentario

Compactar la tabla de simbolos o tabla de transiciones, significa que llegaremos a la construcción de 2 tablas adicionales que no contiene desperdicios de memoria producto de todas las casillas que catalogadas como error en el análisis léxico.

Basado en la tabla de símbolos que hemos utilzado en el post Análisis Léxico, procederé a la construcción de las tablas compactas.

image La primera tabla se construye de la siguiente manera:

c1: Son los estados del automata

c2: La primera fila inicia con 1, luego es el resultado de sumar c1 y c2

c3: Es un número que equivale a suma de los elementos que no son error en la tabla de tranciiones en el estado c1 correspondiente.

image La tabla 2 contiene

c1: Números secuenciales

c2: Consiste en la enumeración de todos los elementos que no son error basados en la tabla de transiciones

c3: Es el numero de columna correspondiente el elemento c2 en la tabla de transiciones

Para reconocer una cadena con estas tablas lo que se hace es lo siguiente:

Asumamos que se quiere reconocer el if(

  • 1. Pasamos a número de columna cada caracter de acuerdo a la tabla de transiciones de lo que nos quedaria 125 que es equivalente a if(
  • La c2 de la tabla 1 nos indica a que fila vamos en la tabla 2, en este caso nos envia a la tabla 2 en la fila 1 con 6 posibilidades de comparación
  • Comparamos es caracter de entrada que es el 1 con el c3 de la tabla 2, en este caso son iguales
  • La c2 de la tabla 2 nos indica a que fila vamos en la tabla 1, en este caso nos envia a la fila 1.
  • Continuando c2 =7 y nos vamos a la fila 7 de la tabla 2……

Cuando encontramos un número negativo(token) es por que la cadena que estamos trabajando ha sido reconocida sin problemas.

Estas tablas se utilizan para la programación del analizador sintáctico.

Categorías:Compiladores