2、stream>#include#includeusingnamespacestd;#defineNOTKEY50#defineiT00#definecT01#definesT02#defineCT03char*kt[5]={"int","main","void","if","char"};char*pt[18]={">=","<=","==","=",">","<","+","-","*","/","{","}",",",";","(",")","[","]"};intTy=3;intd
3、d=0;charvn[]={'E','e','T','t','F'};charvt[]={'i','W','w','(',')','#'};char*right[]={"Te","WTe","","Ft","wFt","","i","(E)"};intseekkt(char*TOKEN){for(inti=0;i<5;i++){if(strcmp(TOKEN,kt[i])==0){returni+4;}}returnNOTKEY;}intseekpt(char*TOKEN){for(inti=0;i<18;i++){if
4、(strcmp(TOKEN,pt[i])==0){returni+10;}}return-1;}intmain(){intTOHN();intintN();intscan();intRight();intprint();TOHN();intN();scan();if(dd==0){cout<s;structNode{charcontent[30];inttype;Node*n
5、ext;};Node*itHead;Node*CtHead;Node*ctHead;Node*stHead;Node*TOHead;Node*pp;voidE();voidT();voidF();voidTOHN(){TOHead=newNode();strcpy(TOHead->content,"");TOHead->type=0;TOHead->next=NULL;}voidsetTON(char*content,inttype){Node*p=TOHead;Node*temp=newNode();while(p->
6、next!=NULL){p=p->next;}strcpy(temp->content,content);temp->type=type;temp->next=NULL;p->next=temp;}//初始化所有表头结点voidintN(){itHead=newNode();strcpy(itHead->content,"");itHead->type=iT;itHead->next=NULL;stHead=newNode();strcpy(stHead->content,"");stHead->type=sT;stHe
7、ad->next=NULL;CtHead=newNode();strcpy(CtHead->content,"");CtHead->type=CT;CtHead->next=NULL;ctHead=newNode();strcpy(ctHead->content,"");ctHead->type=cT;ctHead->next=NULL;}//创建新节点voidsetN(char*content,inttype,Node*head){Node*p=head;Node*temp=newNode();intflag=0;wh
8、ile(p->next!=NULL){if(strcmp(content,p->next->content)==0){flag=1;}p=p->next;}if(flag==0){strcpy(temp->content,content);temp->type=type;temp->next=NULL;p->next