Escolar Documentos
Profissional Documentos
Cultura Documentos
strcpy(ts[19],"until");
}
int guarda(string componente)
{
int i,encontro;
for (i=0;i<100;i++)
if (strcmpi(componente,ts[i])==0)
{ encontro=1;
ultimo=i;
break;
}
else
encontro=0;
if (!encontro)
{
ultimo=ultimo+1;
strcpy(ts[ultimo],componente);
}
return(ultimo);
}
void imprime()
{
gotoxy(x,y);
printf("%s
%i %i", componente, clase, tipo);
y=y+1;
if (y==22) {y=5;x=40;}
}
scan()
{ int r;
if (!pendiente)
fread(&c,sizeof(c),1,fp);
pendiente=0;
strcpy(componente,"");
q=0;
while(q<100)
{
int largo;
r=trae_indice(c);
q=matriz[q][r];
if (q!=0)
{
largo=strlen(componente);
componente[largo]=c;
componente[largo+1]='\x0';
}
if (q<100)
fread(&c,sizeof(c),1,fp);
}
switch (q)
{
case 100:elimina_car(componente);clase=4;tipo=4;pendiente=1;break;
case 101:clase=4;tipo=1;break;
case 102:clase=4;tipo=2;break;
case 103:clase=4;tipo=3;break;
case 104:clase=5;tipo=2;break;
case 105:clase=5;tipo=3;break;
case 106:elimina_car(componente);clase=5;tipo=1;pendiente=1;break;
case 107:clase=5;tipo=5;break;
case 108:elimina_car(componente);clase=5;tipo=4;pendiente=1;break;
case 109:clase=5;tipo=6;break;
case 110:clase=6;tipo=0;break;
case 113:clase=7;tipo=0;break;
case 111:
{elimina_car(componente);
tipo=guarda(componente);
if (tipo<20) //palabra reservada
clase=1;
else
clase=2; //identificador
pendiente=1;break;}
//constante entera
case 112: elimina_car(componente);clase=3;tipo=guarda(componente);
pendiente=1;break;
case 200: cprintf("ERROR - se esperaba un =");break;
case 201: cprintf("ERROR - caracter invalido");break;
}
return(componente, clase, tipo);
}
}; //clase
void main()
{
lexico lex;
clrscr();
if ((fp=fopen("edito.txt","r"))==NULL)
{ clrscr();
cprintf("NO PUEDE ABRIR EL ARCHIVO");
}
else
{
fread(&c,sizeof(c),1,fp);
pendiente=1;
while (!feof(fp))
{
lex.scan();
lex.imprime();
}
}
fclose(fp);
getche();
}