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; } } }
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); } } }