5.2. Desarrollo del compilador de pseudocódigo en español
5.2.3. Codificación
5.2.3.4. Tabla de símbolos
Definición de elementos a almacenar en la tabla de símbolos.
Antes de definir la estructura de la tabla de símbolos que será utilizada por las distintas fases del compilador, es necesario definir y tener claro cuáles son los elementos que se desean almacenar dentro de ella.
En base a la sintaxis del lenguaje HITO (Ver Anexo G), se han identificado los siguientes elementos como necesarios de almacenamiento:
El nombre del algoritmo para un archivo determinado que contenga un programa escrito en el lenguaje HITO.
Los distintos subalgoritmos que podrían ser definidos para un algoritmo dentro de un programa escrito en el lenguaje HITO.
Los parámetros de los subalgoritmos definidos dentro de un programa escrito en el lenguaje HITO. Los cuales se utilizarán como variables dentro del ámbito del subalgoritmo al que pertenecen.
Repositorio Institucional -UNAMBA -PERÚ
80
Las variables definidas y utilizadas, tanto para el algoritmo de un programa escrito en el lenguaje HITO como para todos sus subalgoritmos definidos.
Definición de información necesaria para los objetos a almacenar en la tabla de símbolos.
Como segundo paso es necesario definir para cada tipo de objeto que será almacenado en la tabla de símbolos la información que es necesaria para su manipulación, identificación y ordenamiento.
A continuación se presentan los datos que serán almacenados para cada objeto definido:
Para el caso de los algoritmos se necesita conocer:
Nombre del algoritmo.
Para el caso de los subalgoritmos se necesita conocer:
Nombre del subalgoritmo.
Si se trata de una función o un procedimiento.
Tipo de dato a retornar por el subalgoritmo si se trata de una función.
Cantidad, tipo y estructura de los parámetros.
Para el caso de los parámetros se necesita conocer:
Nombre del parámetro.
Tipo de dato del parámetro.
Si se trata de un arreglo o una matriz.
Para el caso de las variables se necesita conocer:
Nombre de la variable.
Tipo de dato de la variable.
Si se trata de un arreglo o una matriz.
Su longitud (en caso de ser un arreglo o una matriz).
Su anchura (en caso de ser una matriz).
Ámbito al que pertenece y su ubicación dentro de éste.
Repositorio Institucional -UNAMBA -PERÚ
81
Definición de campos de la tabla de símbolos.
En base a lo expuesto en la sección anterior, se determinó que la tabla de símbolos contará con los siguientes campos:
Nombre del objeto (necesario para todos los tipos de objeto que se almacenarán).
Tipo del objeto (si se trata de un algoritmo, un subalgoritmo, un parámetro o una variable).
Subtipo del objeto (si se trata de una función o un procedimiento para el caso de los subalgoritmos, o si se trata de un arreglo o una matriz para el caso de los parámetros y las variables).
Tipo de dato del objeto (para los objetos que necesiten un tipo de dato como es el caso de los parámetros, las funciones y las variables).
Longitud de un arreglo o un matriz (para las variables que sean cualquiera de estos tipos de estructura).
Anchura de una matriz (para las variables que lo sean).
Cantidad de parámetros (para el caso de los subalgoritmos).
Valor booleano que indique utilización dentro de una instrucción para (necesario también en el caso de las variables).
Nivel del objeto que indique el ámbito para una variable (si se trata de una variable local o global).
Dirección del objeto dentro del ámbito al que pertenece (utilizado exclusivamente por variables).
La lista de parámetros que el objeto posee (para el caso de los subalgoritmos).
Definición del tipo de estructura para la tabla de símbolos
En base al lenguaje HITO, y en vista que se desea implementar un código legible y fácil de interpretar, se optó por diseñar una tabla de símbolos cuyo diseño, organización y sistema de acceso sean de tipo lineal.
Además, para optimizar un poco la agilidad y eficiencia en el uso de la tabla de símbolos, dicha organización lineal será implementada en el lenguaje C#
mediante una ArrayList.
Repositorio Institucional -UNAMBA -PERÚ
82
Definición de elementos necesarios para el almacenamiento, extracción y eliminación de elementos en la tabla de símbolos.
Para poder contar con un nivel aceptable de eficiencia en el uso de la tabla de símbolos se han considerado como necesarios los siguientes elementos:
Un apuntador al primer registro de la tabla de símbolos de forma que se puede utilizar como frontera en los procesos de evaluación y de búsqueda.
Un apuntador al último registro añadido a la tabla de símbolos de forma que se pueda contar con su información mientras su proceso de evaluación permanezca activo.
Una función encargada de añadir un registro a la tabla de símbolos y de colocar en todos sus campos los datos correspondientes que se consideren necesarios.
Una función encargada de buscar dentro de la tabla de símbolos algún registro determinado utilizando como llave de búsqueda el nombre del objeto almacenado.
Una función encargada de eliminar registro por registro el contenido de la tabla de símbolos de forma que se pueda liberar todo el espacio en memoria utilizado al momento de terminar el proceso de compilación.