Está en la página 1de 6

UNIVERSIDAD NACIONAL JORGE BASADRE

GROHMANN
FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMÁTICA Y SISTEMAS

Practica N° 08

TABLA DE SIMBOLOS

Curso : Compiladores y Teoria de Lenguajes

Ciclo de Estudios : 6to ciclo

Grupo de Laboratorio : Laboratorio B

Estudiante : Juan Pablo Apaza Atencio 2015-119015


TACNA – PERÚ
2018

TABLA DE SIMBOLOS

1. CONTENIDO

En la presente practica se revisará el tema de Tabla de símbolo y su

implementación mediante HASH TABLE

2. MATERIALES Y EQUIPO

 Lenguaje de Programacion C
 Flex
 Ubuntu Desktop
 Archivos disponibles en Aula Virtual

3. OBJETIVOS

 Comprender el funcionamiento de Tabla de símbolos


 Comprender el uso de hash table.

4. FUNDAMENTO TEORICO

La tabla de símbolos es una estructura de datos, creada y mantenida por los


compiladores para almacenar información sobre la ocurrencia de varias entidades,
tales como nombres de variables, nombres de funciones, tipos de datos, etc. Una
tabla de símbolos puede servir para los siguientes propósitos:
 Para almacenar los nombres de todas las entidades en una forma
estructurada en un solo lugar
 Para implementar la verificación de tipos, verificando que las asignaciones y
expresiones en el código fuente sean semánticamente correctas.
 Para determinar el alcance de un nombre de cualquier entidad.
Generalmente la tabla de símbolos es implementada mediante hash table.
La tabla de símbolos tiene las siguientes operaciones
a. Insertar: Esta operación se usa con mayor frecuencia en la fase de análisis,
es decir, la primera parte del compilador donde se identifican los tokens y
los nombres se almacenan en la tabla. Esta operación se usa para agregar
información en la tabla de símbolos sobre nombres únicos que aparecen en
el código fuente. Esta información contiene el valor, el estado, el alcance u
el tipo del símbolo.
b. Búsqueda: Sirve para buscar un nombre en la tabla de símbolos para
determinar:
 Si el símbolo existe en la tabla
 Si está declarado antes de ser usado.
 Si el nombre ha usado en el mismo ámbito o alcance
La tabla de símbolos también nos ayuda a la administración del ámbito o alcance
de una variable. Un compilador generalmente mantiene una tbla de símbolos global
que son accedidos por todos los procedimiento y ámbitos de la tabla de símbolos
que son creados para cada ámbito en el programa, por eso la tabla de símbolos son
manejados en forma jerárquica.
5. DESARROLLO

Contamos con los archivos de la carpeta NUEVO, en este caso tenemos


symtab.h y symtab.c que es la estructura e implementación del hash table. Para
realizar la prueba se utiliza el archivo lexer.l que es un analizador léxico para
obtener los token de estructuras básicas de programación. Lo que busca es realizar
la ejecución del analizador léxico y almacenar en una hash table los identificadores
que reconozca el analizador léxico
Entonces debemos ingresar a la carpeta de trabajo donde hayan guardado los
archivos y digitar lo siguiente:

Una vez ejecutado los anterior nos saldrá la siguiente imagen


Donde en la ejecución detecto todo los tokens con su respectiva denominación y
la línea donde se encontró dentro del archivo.
Ahora para saber que de verdad funciono la tabla has, en la carpeta se debe haber
generado automáticamente el archivo symbtab_dump.out. Este archivo contiene lo
que la tabla hash almacena en ese momento:

Luego de haber implementado lo anterior, crearemos un nuevo archivo llamar


codigo2.c con el siguiente código fuente:

Luego ejecutamos la siguiente instrucción


 ./test codigo2.c
Y nos mostró la siguiente imagen

Ahora para saber que de verdad funciono la tabla has, en la carpeta se debe haber
generado automáticamente el archivo symbtab_dump.out. Este archivo contiene lo
que la tabla hash almacena en ese momento:

6. CONCLUSIONES
 Se ha comprendido el total funcionamiento de tabla de símbolos agregando
un nuevo ejemplo
 Se ha comprendido el uso de la HASH TABLE agregando un nuevo ejemplo

También podría gustarte