next up previous contents
Next: 6.3.3 Funciones de actualización Up: 6.3 Integración con el Previous: 6.3.1 La variable token

6.3.2 Estructuras de datos auxiliares

Como se ha podido observar en la definicón de la estructura ice_lex_object, los campos que son listas de enteros tienen asignado el tipo INT_LIST, y los que son listas de cadenas de carácteres el tipo STRING_LIST. Estos dos tipos han sido definidos para facilitar la tarea de manejo de tales listas, ya que además de definir el tipo en sí se define un conjunto de funciones asociadas que permiten trabajar de un modo seguro y estandarizado sobre estas listas.

La lista de enteros

El tipo INT_LIST implementa las listas de enteros. La declaración de este tipo se realiza como se muestra en las siguientes líneas de código:

typedef struct ITEM_INT_LIST *INT_LIST

struct ITEM_INT_LIST
{
   int         data_item;
   INT_LIST    next_item;
};

Por tanto, cuando se declara una variable de tipo INT_LIST, se está declarando realmente un puntero a un objeto en memoria de tipo ITEM_INT_LIST, el cual es una estructura que almacena un valor entero, identificado como el campo data_item y un puntero al siguiente elemento de la lista, identificado mediante el campo next_item.

Para manejar este tipo de listas, se han definido las siguientes funciones:

Con estas funciones se dispone de un conjunto lo suficientemente amplio de operadores para tratar las listas de enteros sin necesidad de recurrir a manipulaciones manuales de sus elementos.

La lista de cadenas de carácteres

Las listas de cadenas de carácteres, que por ahora sólo se utilizan para tratar el campo lemma de la variable componente léxico, se implementan mediante la utilización del tipo STRING_LIST, el cual se declara tal y como se muestra en las siguientes líneas de código:

typedef struct ITEM_STRING_LIST *SRING_LIST;

struct ITEM_STRING_LIST
{
   char *data_item;
   STRING_LIST next_item;
}

Al igual que ocurría con las lista de enteros, una variable de tipo STRING_LIST es un puntero a una estructura ITEM_STRING_LIST que representa el primer elemento de la lista de cadenas de carácteres. Estas estructuras tienen dos campos, uno de los cuales, que recibe por nombre data_item, almacena un puntero a una cadena de caracteres, mientras que el otro, llamado next_item, almacena un puntero al siguiente elemento de la lista.

El conjunto de funciones que se han definido para tratar con este tipo de listas es equivalente al que se definió para trabajar con las listas de enteros. Así, se dispone de las siguientes funciones:


next up previous contents
Next: 6.3.3 Funciones de actualización Up: 6.3 Integración con el Previous: 6.3.1 La variable token

Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997