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
·
Comentarios
Publicar un comentario