Universidad Nacional de Costa Rica, Curso Estructuras de Datos - II Ciclo, 2019.
Integrandes del grupo:
Alvaro Daniel Delgado Brenes
Isaac Touma Rodriguez
Alexander Brenes Brenes
int
float
string
char
El símbolo corresponde al nombre de la variable o de la función. Por ejemplo:
int foo()
La cadenafoo
corresponde al símbolo. Mientra queint
es el tipo de dato.string var
La cadenavar
corresponde al símbolo. Mientra questring
es el tipo de dato.
- Programa principal: Desde la primer linea del archivo de texto hasta la última, exista o no una función main.
- Uso de la palabra reservada if: Este bloque comienza desde el cierre del paréntesis de la expresión y se extiende hasta "".
- Uso de la palabra reservada while: Este bloque comienza desde el cierre del paréntesis de la expresión y se extiende hasta "".
Para cada error (en cuanto a símbolos) en el archivo de texto, existirá un código y una descripción (string
) asociada a este, para la notificación al usuario.
Código | Descripción |
---|---|
1 | El identificador <identificador > no está declarado en este enfoque. |
2 | El tipo de valor de retorno no coincide con el valor de retorno de <función >. |
6 | Doble declaración de identificador <identificador >. |
Una clase que implementa las funcionalidades básicas de una tabla de símbolos:
lookup(<identificador>)
insert(<identificador>, <tipo de dato>)
concatenate_scopes(upper_scope)
add_upper_scope(upper_scope)
Los dos últimos utilizados para el manejo de los diferentes enfoques, es decir,por ejemplo para poder buscar si una variable utilizada en un método y no ha sido declarada ahí mismo, fue declarada en un enfoque superior (upper_scope) como lo sería en el enfoque global.
Esta clase tiene la responsabilidad de leer un archivo de texto mientras carga su contenido en instancias de la clase SymbolTable. Siendo cada SymbolTable utilizada para representar los diferentes enfoques del código.