Ejemplo n.º 1
0
void mostrar_variables_no_referenciadas (TABLA_SIMBOLOS tabla, int nivel)
/**********************************************************************/
{
   int i, n, j;
   SIMBOLO *simbolo;
   int hay = FALSE; /* Hay o no hay variables no referenciadas en este nivel */
   
   for (i = 0; i < TAMANO_TABLA; ++i)	 
   {	
     n = longitud_lista (tabla[i]); 
     for (j = 1; j <= n; ++j)
     {
	   simbolo = (SIMBOLO*) observar (tabla[i], j);	   
	   if (((*simbolo).tipo == VARIABLE) && ((*simbolo).referenciada == FALSE)
	       && ((*simbolo).nivel == nivel)) 
	   {  if (hay == FALSE) 
	      { 
	        fprintf (stderr, "AVISO! (%d, %d): Variables no referenciadas en el bloque recien cerrado:\n", lineno, linepos);
	        fprintf (stderr, "%s\n", (*simbolo).nombre); 
		hay = TRUE;
	      }	
	      else fprintf (stderr, "%s\n", (*simbolo).nombre); hay = TRUE;	      
	   }
     }
   }
}
Ejemplo n.º 2
0
void mostrar_parametros (LISTA lista)
/**********************************************************************/
{
   int i, n = longitud_lista (lista);
   SIMBOLO *simbolo;

   fprintf (stderr, "[[ ");
   for (i = 1; i <= n; ++i)
   {
	   simbolo = (SIMBOLO*) observar (lista, i);
	   mostrar_simbolo (*simbolo);
   }
   fprintf (stderr, "]] ");
}
Ejemplo n.º 3
0
void ocultar_parametros (TABLA_SIMBOLOS tabla, int nivel)
/**********************************************************************/
{
   int i, j;

   for (i = 0; i < TAMANO_TABLA; ++i)
       for (j = 1; j <= longitud_lista (tabla[i]); ++j)
       {
           SIMBOLO *simbolo = (SIMBOLO*) observar (tabla[i], j);

           if (ES_PARAMETRO(*simbolo) && ((*simbolo).nivel == nivel))
			  (*simbolo).visible = FALSE;
       }
}
Ejemplo n.º 4
0
// -------------------------------------- ContainerInspector::cambiarContainer()
AlmacenObjetos * ContainerInspector::cambiarContainer(AlmacenObjetos *c)
{
        if ( contActual != c ) {
            // Dejar de observar el container actual
            if ( contActual != NULL ) {
                    dejarDeObservar( contActual );
            }

            // Pasar al actual
            observar( c );
            contActual = c;
            actualiza();
        }

        return c;
}
Ejemplo n.º 5
0
void mostrar_lista_colisiones (int i, LISTA lista)
/**********************************************************************/
{
   int n = longitud_lista (lista);
   SIMBOLO *simbolo;

   fprintf (stderr, "%d: ", i);

   for (i = 1; i <= n; ++i)
   {
	   simbolo = (SIMBOLO*) observar (lista, i);
	   mostrar_simbolo (*simbolo);
	   if ((*simbolo).tipo == ACCION) 
	      mostrar_parametros ((*simbolo).parametros);
   }
   fprintf (stderr, "\n");
}
Ejemplo n.º 6
0
void eliminar_parametros_ocultos (TABLA_SIMBOLOS tabla, int nivel)
/**********************************************************************/
{
   int i, j;

   for (i = 0; i < TAMANO_TABLA; ++i)
   {
       j = 1;
       while (j <= longitud_lista (tabla[i]))
       {
           SIMBOLO *simbolo = (SIMBOLO*) observar (tabla[i], j);

           if (((*simbolo).tipo == PARAMETRO) && (!(*simbolo).visible) && ((*simbolo).nivel == nivel))
			  borrar (&tabla[i], j);
		   else
		      ++j;
       }
   }
}
Ejemplo n.º 7
0
void eliminar_variables (TABLA_SIMBOLOS tabla, int nivel)
/**********************************************************************/
{
   int i, j;

   for (i = 0; i < TAMANO_TABLA; ++i)
   {
       j = 1;
       while (j <= longitud_lista (tabla[i]))
       {
           SIMBOLO *simbolo = (SIMBOLO*) observar (tabla[i], j);

           if (((*simbolo).tipo == VARIABLE) && ((*simbolo).nivel == nivel))
			  borrar (&tabla[i], j);
		   else
		      ++j;
       }
   }
}
Ejemplo n.º 8
0
void eliminar_programa (TABLA_SIMBOLOS tabla)
/**********************************************************************/
{
   int i, j;

   for (i = 0; i < TAMANO_TABLA; ++i)
   {
       j = 1;
       while (j <= longitud_lista (tabla[i]))
       {
           SIMBOLO *simbolo = (SIMBOLO*) observar (tabla[i], j);

           if (((*simbolo).tipo == PROGRAMA) && ((*simbolo).nivel == 0))
			  borrar (&tabla[i], j);
		   else
		      ++j;
       }
   }
}
Ejemplo n.º 9
0
SIMBOLO *buscar_simbolo (TABLA_SIMBOLOS tabla, char *nombre)
/**********************************************************************/
{
   int sitio = hash (nombre);
   SIMBOLO *simbolo = NULL;
   int i = 1, 
	   encontrado = FALSE;

   while (!encontrado && (i <= longitud_lista (tabla[sitio])))
   {
           simbolo = (SIMBOLO *) observar (tabla[sitio], i);

           if ((*simbolo).visible && !strcmp (nombre, (*simbolo).nombre))
			  encontrado = TRUE;
		   else
		      ++i;
   }

   return (encontrado ? simbolo : NULL);
}
Ejemplo n.º 10
0
void eliminar_acciones (TABLA_SIMBOLOS tabla, int nivel)
/**********************************************************************/
{
   int i, j;

   for (i = 0; i < TAMANO_TABLA; ++i)
   {
       j = 1;
       while (j <= longitud_lista (tabla[i]))
       {
           SIMBOLO *simbolo = (SIMBOLO*) observar (tabla[i], j);

           if (ES_ACCION(*simbolo) && ((*simbolo).nivel == nivel))
		   {
			  liberar (&((*simbolo).parametros));
			  borrar (&tabla[i], j);
		   }
		   else
		      ++j;
       }
   }
}