예제 #1
0
void agregar_etiqueta (char *etiqueta)
{ 
  if (numPasada == 1) 
  {
    if (buscar_etiqueta(etiqueta) == NULO) anadir_etiqueta(etiqueta, instno+1);
    else 
    {
      printf("ERROR SEMANTICO! (%d, %d): la etiqueta %s ya ha sido declarada.\n",
              lineno, linepos, etiqueta);
      error = 1;       
    }	      
  }
} 
예제 #2
0
int referencia (char *etiqueta)
{ 
  int r;
  
  if (numPasada == 2)
  {
    if ((r = buscar_etiqueta(etiqueta)) == NULO)
    {
      printf("ERROR SEMANTICO! (%d, %d): la etiqueta %s no ha sido declarada.\n",
              lineno, linepos, etiqueta);
      error = 1;
      return r;		  
    }		 
    else return r;
  }
  else return NULO; 
}
void armar_tabla_etiquetas(void)
{
    int i=0,k=0,num_linea=0;
    char linea[50];
    for(;i<strlen(fuente);i++)
    {
        if(fuente[i]!='\n')
            linea[k++] = fuente[i];

        linea[k]='\0';

        if(fuente[i]=='\n' || fuente[i+1]=='\0' )
        {
            buscar_etiqueta(linea,num_linea);
            num_linea++;
            k=0;
            num_linea = buscar_pseudo_org(linea,num_linea);
        }
    }
}