Está en la página 1de 2

/**** global.

h ***************************************/

#include <stdio.h> /* carga las rutinas de entrada y salida */


#include <ctype.h> /* carga las rutinas de pruba de caracteres*/

#define TAMBUFF 128 /* tamaño del buffer */


#define NINGUNO -1
#define FDC ´\0´

#define NUM 256


#define DIV 257
#define MOD 258
#define ID 259
#define FIN 260

int valcomplex; /* valor del atributo del componente lexico*/

int numlinea;

struct entrada { /* forma del elemento de entrada de la tabla de símbolos*/

char *aplex;
int complex;
};

struct entrada tablasinm {}; /*tabla de símbolos*/

/**** analizlex.c *************************************/

#include "global.h"

char buflex {TAMBUFF};


int numlinea = 1;
int valcomplex = NINGUNO;

int análex () /*analizador lexico*/


{
int t;
while (1) {
t= getchar();
it (t=='' t=='/t')
; /*elimina espacios en blanco*/
else if (t ==´\n´)
numlínea = numlínea + 1;
else if (isdigit(t)) { /* t es un digito */
ungetc(t, stdin) ;
scanf("%d", &valcomplex) ;
return NUM;
}
else if (isalpha(t)) { /* t es una letra*/
int p, b=0;
while (isalnum(t)) { /* t es alfanumérico */
buflex[b] = t;
t = getchar ();
b = b+1;
if (b >= TAMBUFF)
error("error del compilador");

}
buflex[b] = FDC;
if (t != EOF)
ungetc (t, stdin);
p = busca (buflex);
if (p == 0)
p = inserta (buflex, ID);
valcomplex = p;
return tablasimb[p].complex;
} else if (t == EOF)
return FIN;
else {
valcomplex = NINGUNO;
return t;
}

}
}

También podría gustarte