Lab 5 (Symbol Table)
Last updated
Was this helpful?
Last updated
Was this helpful?
Han terminado las primeras 2 fases de su proyecto, y ahora es donde empieza la verdadera batalla contra el dragon. En la fase 3 se encargarán de hacer el análisis semántico del compilador, es decir, en pocas palabras, deben asignar un tipo a cada nodo del árbol generado en la fase 2, y así terminar de capturar cualquier error o inconsistencia en el código o programa a compilar. Para realizar esta fase, ustedes deben implementar una tabla de símbolos en donde guardarán todas las variables declaradas para validar su existencia en base a su scope, y poder asignar un tipo a cada una.
Para iniciar, ejecuten el comando para generar los archivos necesarios:
Estos son los archivos necesarios para implementar la fase 3 del proyecto, pero por ahora nos enfocaremos únicamente en SymtabExample.java. Veán que este archivo contiene un ejemplo de como funciona la tabla de símbolos:
La tabla de símbolos (SymbolTable.java), en su implementación, utiliza un stack para los scopes, y adicional al ejemplo que tienen en el archivo, estos son los métodos que contiene la clase:
Vean que las entradas de la tabla de símbolos son pares (Key,Value), donde el valor es de tipo Object. En este laboratorio, para simplificar la calificación, ingresaremos únicamente valores de tipo String.
Ahora que se han familiarizado un poco con la tabla de símbolos, es hora de modificar el archivo SymtabExample.java. Agreguen a este un menú en el que se puedan realizar las siguientes operaciones:
Agregar Símbolo
Agregar Scope
Borrar Scope
Buscar en el scope actual (devolver el valor almacenado con el símbolo)
Buscar en cualquier scope (devolver el valor almacenado con el símbolo)
Comparar el valor de 2 simbolos diferentes
Imprimir tabla de símbolos
Salir
Para compilar su programa deben de hacer lo siguiente:
Para ejecutarlo:
Una vez terminado todo, envíen al GES un archivo .zip conteniendo únicamente el archivo SymtabExample.java