⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s.cpp

📁 编译实验可用的词法分析代码
💻 CPP
字号:
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>

 int flag=0;
 char cch;
 char bchar;
 char str[100];
 FILE *fp;
void Pushback(char c)//放回字符
{
 bchar=c;
  flag=1;
}

char GetC( )//取下一个字符
{
   if(flag==1)
   {
    flag=0;
    return bchar;
   }
   char t;
   t=getc(fp);
   if(t=='\n'||t=='\t'||t=='\r') t=' ';
   return t;
}

int SearchKey( )
{
 char Token[7][10]={"main","if","else","int","return","void","while"};
  for(int i=0;i<7;i++);
   {
   if(strcmp(Token[i],str)==0)  
   return i+1;  
    }
   return 0;
}
 
void GetNextWord( )
{
   
 cch=GetC();
 while(cch==' ')
  {
   cch=GetC( );
  }
 int k=0;
 str[0]=cch;
 if((cch>='a'&&cch<='z')||(cch>='A'&&cch<='Z'))
 {
 
  str[++k]=cch;
  cch=GetC( );
  while((cch>='a'&&cch<='z')||(cch>='A'&&cch<='Z')||
   (cch>='0'&&cch<='9'))
  {
   str[k++]=cch;
   cch=GetC( );
  }
  str[k]='\0';
  Pushback(cch);
  int sk=SearchKey();
  if(sk==0)
   cout<<"28"<<"   "<<str;
  else
   cout<<sk<<"   "<<str;

  }
 else if(cch<='9'&&cch>='0')
 {
  //start
  while(cch>='0'&&cch<='9')
  {
   str[k++]=cch;
   cch=GetC( );
  }
  str[k]='\0';
  Pushback(cch);
   cout<<"29"<<"   "<<str;

//end
  }

    else
    {
     switch(cch)
     {
     case '+':cout<<"9"<<"    "<<"+";break;
     case '-':cout<<"10"<<"    "<<"-";break;
     case '*':cout<<"11"<<"    "<<"*";break;
     case '/':cout<<"12"<<"    "<<"/";break;
     case '<':{cch=GetC( );
          if(cch=='=') cout<<"14"<<"    "<<"<=";
       else {
        Pushback(cch);
        cout<<"13"<<"    "<<"<";
       }
        };break;
      case '>':{cch=GetC( );
          if(cch=='=') cout<<"16"<<"    "<<">=";
       else {
        Pushback(cch);
        cout<<"15"<<"    "<<">";
       }
        };break;
      case '!':{cch=GetC( );
          if(cch=='=') cout<<"18"<<"    "<<"!=";
       else {
        Pushback(cch);
       }
        };break;
     case '=':{cch=GetC( );
          if(cch=='=') cout<<"17"<<"    "<<"==";
       else {
        Pushback(cch);
        cout<<"8"<<"    "<<"=";
       }
           };break;
     case '(':cout<<"26"<<"    "<<"(";break;
     case ')':cout<<"27"<<"    "<<")";break;
     case '[':cout<<"24"<<"    "<<"[";break;
     case ']':cout<<"25"<<"    "<<"]";break;
     case '{':cout<<"22"<<"    "<<"{";break;
     case '}':cout<<"23"<<"    "<<"}";break;
     case ':':cout<<"20"<<"    "<<":";break;
     case ',':cout<<"21"<<"    "<<",";break;
     case ';':cout<<"19"<<"    "<<";";break;
      }//switch
      }//else
    
      }
  
void main()
{if((fp=fopen("11.txt","r"))==0)
  cerr<<"Can not open!";
else
{
 while(cch!='#')
 {
  GetNextWord( );
  cout<<endl;
 }
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -