AnAlIzAdOr LéXiCo eN C

angelucha84
23 de Abril del 2005
Creo k es mas fácil poner el código k hacer k nos mandemos mensajes no creen?? aki les dejo el código de mi analizador Lexico
mi e-mail es [email protected]

#include<conio.h>
#include<stdio.h>
#define BUFLEN 200
void vaciar();
FILE *fp;
char filename[10];
char simbolos[BUFLEN];
char *pal_res[BUFLEN];
char*bus[10],*pun[10];
char cad[100];
int bandera=0;
char c;
int p1[7],y1;
int p2[30];
int f,t;
char x;
int p;
y[20];
int s,r,m;
main()
{ /*
clrscr ();
printf("n ESCRIBE EL NOMBRE DEL ARCHIVO:");
scanf("%s",&filename);
if((fp=fopen("simbolos.txt","r"))==NULL)
{
printf("n ERROR ARCHIVO NO CREADO:");
getch();
}
else
{
s=0;
p1[0]=0;
p=1;
while((simbolos[s]=fgetc(fp))!=EOF)
{

if(simbolos[s]=='n')
{
p1[p]=s+1;
p++;
}
s++;
}
simbolos[s]='n';
fclose(fp);
if((fp=fopen("pal_res.txt","r"))==NULL)
{
printf("n ERROR ARCHIVO NO CREADO:");
getch();
}
else
{
s=0;
p2[0]=0;
p=1;
while((pal_res[s]=fgetc(fp))!=EOF)
{
if(pal_res[s]=='%')
{
p2[p]=s+1;
p++;
}
s++;
}
// pal_res[s]=='%';
fclose(fp); */
vaciar();
if ((fp=fopen(filename, "r"))!=NULL)
{
while((cad[s]=fgetc(fp))!=EOF)
{
s++;
while(cad[s-1]==' ' ) //Se guarda en la cadena la primera palabra del archivo
{
s=0;
y1=0;
while(cad[s]!=' '&&bandera==0)
{
for (r=0;r<7;r++ )
{
if ( cad[s]==simbolos[p1[r]])
{
bandera=1;
f++;
while(simbolos[p1[r]+f]!='n')
{
printf("n%s ",simbolos[p1[r]+f]);
f++;
}
*bus[y1]=cad[s];
s++;
}
r=0;
s++;
}
}
//fin del for compara la primera posicion para saber si es simbolo
+
/* for (r=0;r<=28;r++ )
{
f=1;

if ( cad[s]==*pal_res[p2[r]]&&cad[s]!='x0')
{
t=s++;
while(cad[t]==*pal_res[p2[r]+f]||bandera==0)
{
t++;
bandera=1;
f++;

if (*pal_res[p2[r]+f+1]=='%')
{
bandera=1;

printf("n ES PALABRA RESERVADA");
r=29;
}
}
}
} */
bandera=0;
}
s=0;
}

}
else
{
printf("n ERROR ARCHIVO NO CREADO: ");
getch();

// }

getch();
// }
}
return 0;
}

void vaciar()
{
clrscr ();
printf("n ESCRIBE EL NOMBRE DEL ARCHIVO:");
scanf("%s",&filename);
if((fp=fopen("simbolos.txt","r"))==NULL)
{
printf("n ERROR ARCHIVO NO CREADO:");
getch();
}
else
{
s=0;
p1[0]=0;
p=1;
while((simbolos[s]=fgetc(fp))!=EOF)
{

if(simbolos[s]=='n')
{
p1[p]=s+1;
p++;
}
s++;
}
simbolos[s]='n';
fclose(fp);
if((fp=fopen("pal_res.txt","r"))==NULL)
{
printf("n ERROR ARCHIVO NO CREADO:");
getch();
}
else
{
s=0;
p2[0]=0;
p=1;
while((*pal_res[s]=fgetc(fp))!=EOF)
{
if(*pal_res[s]=='%')
{
p2[p]=s+1;
p++;
}
s++;
}
// pal_res[s]=='%';

}
}
fclose(fp);
}


/*De que sirve sirve cuidense y ojalá les sirva*/

Angelucha84
23 de Abril del 2005
Para k a todos los k lo necesitan les sirva cada k puedan hagan k este mensaje este vigente y Actual
vale??

LIXY
23 de Abril del 2005
OYE, DESEO SABER QUE INFORMACION CONTIENE LA TABLA DE SIMBOLOS.TXT, TE ENVIE UN MAIL, PARA VER SI ME LO PUEDES ENVIAR, O ASESORARME, SUPONGO QUE ES EL CODIGO FUENTE A ANALIZAR, PERO INTENTE CON OTRO Y NO PUEDO.
TE AGRADECERIA MUCHO TU AYUDA Y ESPERO RECIBIR RESPUESTA.
GRACIAS POR PONER EL CODIGO EN EL FORO, ME PARECE MEJOR IDEA ESO DE PONERLO QUE ENVIARLO, ESPERO QUE PUEDAS PONER TAMBIEN EL DE SIMBOLOS.TXT