void inicializar_tabla (TABLA_SIMBOLOS tabla) /**********************************************************************/ { int i; for (i = 0; i < TAMANO_TABLA; ++i) crear_vacia (&(tabla[i])); }
void asignar (pLISTA nueva, LISTA vieja, int tamano) /**********************************************************************/ { int i; crear_vacia (nueva); for (i = 1; i <= longitud_lista (vieja); i++){ anadir_derecha_copiando (vieja.primero->dato, nueva, tamano); vieja.primero = vieja.primero->siguiente; } }
SIMBOLO *tsim_int_accion (TABLA_SIMBOLOS tabla, char *nombre, int nivel, int dir) /**********************************************************************/ { int sitio = hash (nombre); SIMBOLO simbolo; simbolo.tipo = ACCION; simbolo.nombre = strdup(nombre); simbolo.nivel = nivel; simbolo.dir = dir; simbolo.visible = TRUE; crear_vacia (&(simbolo.parametros)); anadir_izquierda_copiando (&simbolo, &tabla[sitio], sizeof (simbolo)); return (SIMBOLO *) observar_izquierda (tabla[sitio]); }