Posteado por: faustol | Noviembre 30, 2007

Compactación de Tablas

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.


Dejar una respuesta

Tienes que iniciar sesión para escribir un comentario.

Categorías