Tabla de símbolos. Más...

#include <symbols.h>

Métodos públicos

 symbolsTable ()
 
 symbolsTable (const symbolsTable *table)
 
 symbolsTable (symbolsTable *table)
 
refNode *& push_back (refNode *node)
 
void pop_back ()
 
isymTable begin ()
 
isymTable end ()
 
isymTable begin () const
 
isymTable end () const
 
isymTable find (runNode *node)
 
refNode * findRef (runNode *node, runNode *default_node=NULL)
 
void clear ()
 
void clearRef ()
 
bool empty ()
 
int size () const
 
runNode *& operator[] (const string key)
 
runNode * findKey (string key) const
 
runNode *& operator[] (refNode *key)
 
runNode *& operator[] (runNode *key)
 
runNode *& operator[] (int val)
 
refNode *& getRef (int val)
 
void erase (runNode *key)
 
void erase_position (unsigned int i)
 
void print ()
 
refNode * last ()
 
refNode * first ()
 
void insert (isymTable i, refNode *element)
 
void insert (int pos, refNode *element)
 

Métodos públicos estáticos

static symbolsTable copyRef (symbolsTable *sym)
 

Descripción detallada

Tabla de símbolos.

Una tabla de símbolos es una estructura de datos que guarda una serie de referencias que apunta a otros nodos. Generalmente los nodos referenciados por la tabla de símbolos serán creados de forma dinámica, fruto de la ejecución del árbol sintáctico.

Las tablas de símbolos pueden contener nodos que guarden cierta relación. Por ejemplo se puede utilizar una tabla para las variables, otras paras las funciones...

Ver también
refNode

Documentación del constructor y destructor

symbolsTable::symbolsTable ( )

Constructor de la clase. Crea una tabla de símbolos vacía.

symbolsTable::symbolsTable ( const symbolsTable *  table)

Constructor de la clase. Crea una tabla de símbolos a partir de otra con el atributo de constante.

Parámetros
tableTabla de símbolos constante.
symbolsTable::symbolsTable ( symbolsTable *  table)

Constructor de la clase. Crea una tabla de símbolos a partir de otra.

Parámetros
tableTabla de símbolos.

Documentación de las funciones miembro

isymTable symbolsTable::begin ( )

Obtiene un iterador de tabla de símbolos a la primera referencia.

Devuelve
Obtiene un iterador de la tabla de símbolos que apunta a la primera referencia.
isymTable symbolsTable::begin ( ) const

Obtiene un iterador de tabla de símbolos a la primera referencia.

Devuelve
Obtiene un iterador de la tabla de símbolos que apunta a la primera referencia.
void symbolsTable::clear ( )

Vacia la tabla de símbolos eliminado las referencias.

void symbolsTable::clearRef ( )

Vacia la tabla de símbolo sin eliminar las referencias.

symbolsTable symbolsTable::copyRef ( symbolsTable *  sym)
static

Crea y devuelve una tabla de símbolos cuyas referencias han sido copiadas a partir de otras.

Parámetros
symTabla de símbolos base.
Devuelve
Nueva tabla de símbolos con las referencias de la tabla facilitada.
bool symbolsTable::empty ( )

Determina si la tabla de símbolos está vacía.

Devuelve
Booleano que determina si la tabla está vacía.
isymTable symbolsTable::end ( )

Obtiene un iterador de tabla de símbolos al final de la tabla

Devuelve
Obtiene un iterador de la tabla de símbolos que apunta al final de la tabla.
isymTable symbolsTable::end ( ) const

Obtiene un iterador de tabla de símbolos al final de la tabla.

Devuelve
Obtiene un iterador de la tabla de símbolos que apunta al final de la tabla.
void symbolsTable::erase ( runNode *  key)

Elimina la referencia determinada por un nodo que hace de clave. Si no existe no se lleva a cabo ninguna acción.

Parámetros
keyNodo que hace de clave.
void symbolsTable::erase_position ( unsigned int  i)

Elimina la referencia que ocupa una determinada posición de la tabla de símbolos. Si está fuera de rango no se lleva a cabo ninguna acción.

Parámetros
iPosición.
isymTable symbolsTable::find ( runNode *  node)

Busca y devuelve un iterador posicionado en el elemento de la tabla de símbolos que apunta al nodo dado, según la función de comparación de nodos.

Parámetros
nodeNodo a buscar.
Devuelve
Iterador a la referencia del elemento buscado. Al final de la tabla si no se encuentra.
runNode * symbolsTable::findKey ( string  key) const

Permite acceder a una referencia de la tabla de símbolos a partir de una clave. Si la clave no es encontrada devuelve un nodo nulo.

Parámetros
keyClave correspondiente a la referencia a buscar.
Devuelve
Nodo al que apunta la referencia dada por la clave. Si no existe una referencia se devuelve el nodo nulo.
refNode * symbolsTable::findRef ( runNode *  node,
runNode *  default_node = NULL 
)

Busca y devuelve la referencia de la tabla que apunta a un nodo dado, según la función de comparación de nodos. Si no es encontrado se crea una referencia en la tabla cuyo valor es el nodo por defecto. Si es encontrado el nodo por defecto es liberado.

Parámetros
nodeNodo a buscar.
default_nodeValor por defecto si no es encontrado.
Devuelve
Referencia al nodo buscado o al nodo por defecto si no es encontrado.
refNode * symbolsTable::first ( )

Obtiene la primera referencia de la tabla de símbolos.

Devuelve
Primera referencia de la tabla.
refNode *& symbolsTable::getRef ( int  val)

Obtiene la referencia de la tabla de símbolos en la posición dada. Si está fuera de rango se devuelve NULL.

Parámetros
valPosición.
Devuelve
Referencia que ocupa la posición dada. NULL si fuera de rango.
void symbolsTable::insert ( isymTable  i,
refNode *  element 
)

Inserta una referencia tras un iterador dado.

Parámetros
iIterador tras el cual se realizará la operación.
elementReferencia a insertar.
void symbolsTable::insert ( int  pos,
refNode *  element 
)

Inserta una referencia en una posición dada.

Parámetros
posPosición en la cual se realizará la operación.
elementReferencia a insertar.
refNode * symbolsTable::last ( )

Obtiene al última referencia de la tabla de símbolos.

Devuelve
Última referencia de la tabla de símbolos.
runNode *& symbolsTable::operator[] ( const string  key)

Sobrecarga el operador de acceso. Permite acceder a una referencia de la tabla de símbolos a partir de una clave. Si la clave no es encontrada devuelve un nodo nulo.

Parámetros
keyClave correspondiente a la referencia a buscar.
Devuelve
Nodo al que apunta la referencia dada por la clave. Si no existe una referencia se devuelve el nodo nulo.
runNode *& symbolsTable::operator[] ( refNode *  key)

Sobrecarga el operador de acceso. Permite acceder a una referencia de la tabla de símbolos a partir otra referencia, comparándose las claves. Si no es encontrada devuelve un nodo nulo.

Parámetros
keyClave correspodiente a la referencia a buscar.
Devuelve
Nodo al que apunta la referencia dada por la clave. Si no se encuentra una referencia se devuelve el nodo nulo.
runNode *& symbolsTable::operator[] ( runNode *  key)

Sobrecarga el operador de acceso. Permite acceder a una referencia de la tabla de símbolos a partir un nodo que hará de referencia, comparándose las claves. Si no es encontrada devuelve un nodo nulo.

Parámetros
keyReferencia a buscar.
Devuelve
Nodo al que apunta la referencia dada por la clave. Si no se encuentra una referencia se devuelve el nodo nulo.
runNode *& symbolsTable::operator[] ( int  val)

Sobrecarga el operador de acceso. Permite acceder a una referencia de la tabla de símbolos a partir una posición. Si no es encontrada devuelve un nodo nulo.

Parámetros
keyNodo que representa la referencia a buscar.
Devuelve
Nodo al que apunta la referencia dada por la clave. Si no se encuentra una referencia se devuelve el nodo nulo.
void symbolsTable::pop_back ( )

Elimina de la tabla de símbolos la última referencia .

void symbolsTable::print ( )

Imprime la tabla de símbolos por la salida estándar.

refNode *& symbolsTable::push_back ( refNode *  node)

Añade una referencia al final de la tabla de símbolos.

Parámetros
nodeReferencia.
Devuelve
Referencia recién añadida.
int symbolsTable::size ( ) const

Obtiene el tamaño de la tabla de símbolos.

Devuelve
Entero que representa el tamaño.

La documentación para esta clase fue generada a partir de los siguientes ficheros:
  • trunk/src/run/table/symbols.h
  • trunk/src/run/table/symbols.cpp