Friday, May 28, 2010

Write a program in C to perform token separation


#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:

Post a Comment

Contact Form

Name

Email *

Message *