#include<stdio.h>
#include<conio.h>
void main()
{
FILE *fp;
char words[50][25],str[25],ch;
char key[50][25],op[50][10],id[50][25];
int i,j,k=0,w=0,p=0,d=0;
int yes=0;
fp=fopen("ttoken.c","r");
clrscr();
printf("\n File: ttoken.c\n\n");
if(fp!=NULL)
{
do
{
j=0;
ch='d';
strcpy(str,"");
while(ch!=' ')
{
ch=getc(fp);
printf("%c",ch);
if(ch==EOF) break;
str[j++]=ch;
switch(ch)
{
case '+':strcpy(op[p++],"+");break;
case '-':strcpy(op[p++],"-");break;
case '*':strcpy(op[p++],"*");break;
case '/':strcpy(op[p++],"/");break;
case '%':strcpy(op[p++],"%");break;
case '=':strcpy(op[p++],"=");break;
}
if(ch==' '||ch=='\n'||ch=='=')
{
j--;
break;
}
if(ch==';'||ch=='('||ch==')'||ch==',')
{
j--;
break;
}
}
str[j]='\0';
strcpy(words[w++],str);
if(ch=='(')
strcpy(words[w++],"(");
if(ch==';')
strcpy(words[w++],";");
if(ch==')')
strcpy(words[w++],")");
if(ch=='=')
strcpy(words[w++],"=");
if(ch==',')
strcpy(words[w++],",");
j=0;
}while(ch!=EOF);
}
for(i=0;i<w;i++)
{//1
if((!strcmp(words[i],"for"))||(!strcmp(words[i],"if")))
{
strcpy(key[k++],words[i]);
}
if((!strcmp(words[i],"void"))||(!strcmp(words[i],"else")))
{
strcpy(key[k++],words[i]);
}
if((!strcmp(words[i],"char"))||(!strcmp(words[i],"int")))
{
strcpy(key[k++],words[i]);
yes=1;
for(j=i+1;strcmp(words[j],";");j++)
{
if(!strcmp(words[j],"="))
{
yes=0;
j++;
}
if(!strcmp(words[j],","))
{
yes=1;
j++;
}
if(yes)
strcpy(id[d++],words[j]);
}
}
if((!strcmp(words[i],"float"))||(!strcmp(words[i],"double")))
{
strcpy(key[k++],words[i]);
for(j=i+1;strcmp(words[j],";");j++)
{
if(!strcmp(words[j],"="))
{
yes=0;
j++;
}
if(!strcmp(words[j],","))
{
yes=1;
j++;
}
if(yes)
strcpy(id[d++],words[j]);
}
}
}//1
printf("\n\n* Identifiers:\n");
for(i=0;i<d;i++)
{
printf("%s ",id[i]);
}
printf("\n\n* Keywords:\n");
for(i=0;i<k;i++)
{
printf("%s ",key[i]);
}
printf("\n\n* Operators:\n");
for(i=0;i<p;i++)
{
printf("%s ",op[i]);
}
fclose(fp);
getch();
}
0 Comments