1.6 Generacion de la tabla de simbolos y tabla de direcciones

 Las tablas de símbolos (también llamadas tablas de identificadores y tablas de nombres), realizan dos funciones en el proceso de traducción:

·        Verificar que la semántica sea correcta.

·         Generación del código apropiado.

Ambas funciones se realizan insertando o recuperando de la tabla de símbolos los atributos de las variables usadas en el programa fuente. Estos atributos, tales como: el nombre, tipo, dirección de almacenamiento y dimensión de una variable, usualmente se encuentran explícitamente en las declaraciones o más implícitamente a través del contexto en que aparecen los nombres de variables en el programa.

La tabla de símbolos tiene típicamente la siguiente estructura:

Una tabla de símbolos se designa por la entidad, token -derivados del análisis léxico; así como una serie de atributos (tipo de dato, dirección en memoria) que emanan de otras fases (análisis gramatical y semántico).

En el contexto de un programa las entidades pueden describir propiamente objetos manipulables por el lenguaje (por ejemplo, variables, constantes o funciones) o descriptores de acciones (las palabras reservadas); ambas situaciones son reconocidas bajo el mismo patrón de identificador y la tabla de símbolos se emplea para hacer su discriminación.

El analizador de léxico funciona bajo el siguiente mecanismo:

 



Como las palabras reservadas es un conjunto de entidades conocido y finito, la tabla de símbolos se inicializa con ellas y cuando se reconoce un identificador, su lexema se busca en la tabla y si se encuentra en ella, se regresa el token correspondiente a través de invocar a la función REVISA_RESERVADAS. El algoritmo de la función REVISA_RESERVADAS es el siguiente:






Este algoritmo supone la existencia de dos funciones que realizan la búsqueda y la inserción de un lexema en la tabla de símbolos. La última_entrada direcciona la última entidad registrada y último_lexema la primera localidad disponible donde se registran los lexemas.

La función BUSQUEDA se guía bajo el siguiente algoritmo:





Donde la búsqueda se inicia de la última entidad registrada hacia la primera bajo el supuesto que en un programa se encuentran con mayor frecuencia referencias a variables (que se registran al final) que a palabras reservadas (que están registradas al inicio de la tabla). Si la búsqueda fracasa, la entidad tiene que darse de alta por la función INSERTAR, cuyo algoritmo es:







Donde LONGITUD es una función que determina el número de caracteres que conforman al lexema insertado.

Contenido de la tabla de símbolos.

Una tabla de símbolos puede conceptualizarse como una serie de renglones, cada uno de los cuales contiene una lista de valores de atributos que son asociados con una variable en particular. Las clases de los atributos que aparecen en una tabla de símbolos dependen en algún grado de la naturaleza del lenguaje de programación para el cual se escribe el compilador. Por ejemplo, un lenguaje puede ser sin tipos, y por lo tanto el atributo tipo no necesita aparecer en la tabla. Similarmente, la organización de la tabla de símbolos variará dependiendo de las limitaciones de memoria y tiempo de acceso.

A continuación, se presenta un ejemplo de una tabla de símbolos típica.














Realizado por: Martinez Valentin Carlos 

Num. de control: 16690116



FUENTES:

·    1.- Aguilera, M & Gálvez, S.. (S.f). Tabla de Símbolos. marzo 5, 2021, de LENGUAJES Y CIENCIAS DE LA COMPUTACIÓN Sitio web: http://www.lcc.uma.es/~galvez/ftp/tci/tictema5.pdf

2.- Rouss, K. (S.f). Tabla de simbolos y direcciones. marzo 5, 2021, de academia.edu Sitio web: https://www.academia.edu/16533601/Tabla_de_simbolos_y_direcciones

·         

Comentarios

Entradas populares de este blog

1.1 Árboles de expresiones

1.4 Pila semántica en un analizador sintáctico

1.2 Acciones semánticas de un analizador sintáctico