コード例 #1
0
void lexanalysis(char *str)
 {
   int i=0;
   while(str[i]!='\0')
	{
	 if(Isiden(str[i]))     //for identifiers
	   {
		  while(Isiden(str[i]))
		{
			iden[idi][idj++]=str[i++];
		}
		  iden[idi][idj]='\0';
		  idi++;idj=0;
	   }
	  else
	  if(str[i]=='"')         //for literals
		 {
		 lit[l++]=str[i];
		 for(j=i+1;str[j]!='"';j++)
		   {
			lit[l++]=str[j];
		   }
		 lit[l++]=str[j];lit[l]='\0';
		 strcpy(litral[liti++],lit);
		 i=j+1;
		 }
	  else
	  if(Isop(str[i]))        // for operators
		  {
		 while(Isop(str[i]))
			{
			 oper[opi][opj++]=str[i++];
			}
		 oper[opi][opj]='\0';
		 opi++;opj=0;
		  }
	   else
	   if(Isdel(str[i]))     //for delemeters
		  {
		  while(Isdel(str[i]))
			{
			  delem[deli++]=str[i++];
			}
		   }
		else
		   {
			i++;
		}
	 }

   removeduplicate();
   final();
コード例 #2
0
ファイル: LEXEME.C プロジェクト: hkrocking70/programs
void lexanalysis(char *str)
 {
   int i=0;
   while(str[i]!='\0')
    {
     if(Isiden(str[i]))     //for identifiers
       {
	  while(Isiden(str[i]))
	{
	    iden[idi][idj++]=str[i++];
	}
	  iden[idi][idj]='\0';
	  idi++;idj=0;
       }
      else
      if(Isop(str[i]))        // for operators
	  {
	 while(Isop(str[i]))
	    {
	     oper[opi][opj++]=str[i++];
	    }
	 oper[opi][opj]='\0';
	 opi++;opj=0;
	  }
       else
       if(Isdel(str[i]))     //for delemeters
	  {
	  while(Isdel(str[i]))
	    {
	      delem[deli++]=str[i++];
	    }}
	else
	   {
	    i++;
	    }}
removeduplicate();
   final();