#include#include int ddd(char a[100],int i){ switch(a[i]) { case '+':case '-':case '*':case '/':case '=':case ';':case '(':case ')': { return(1); } case ':': { if(a[i+1]=='=') { return(2); } else return(1); } case '<': { if(a[i+1]=='>') { return(2); } else if(a[i+1]=='=') { return(2); } else return(1); } case '>': { if(a[i+1]=='=') { return(2); } else return(1); } default: return(0); break; }}int ccc(char a[100],int i){ switch(a[i]) { case '+': { printf("(13,+)"); return(1); } case '-': { printf("(14,-)"); return(1); } case '*': { printf("(15,*)"); return(1); } case '/': { printf("(16,/)"); return(1); } case ':': { if(a[i+1]=='=') { printf("(18,:=)"); return(2); } else printf("(17,:)"); return(1); } case '<': { if(a[i+1]=='>') { printf("(21,<>)"); return(2); } else if(a[i+1]=='=') { printf("(22,<=)"); return(2); } else printf("(20,<"); return(1); } case '>': { if(a[i+1]=='=') { printf("(24,>=)"); return(2); } else printf("(23,>"); return(1); } case '=': { printf("(25,=)"); return(1); } case ';': { printf("(26,;)"); return(1); } case '(': { printf("(27,()"); return(1); } case ')': { printf("(28,)"); return(1); } default: return(0); break; }}void number(char a[10]){ int i=0; char text[10]; while(a[i]!='\0') { text[i]=a[i]; i++; } text[i]='\0'; printf("(11,%s)",text);}void fing(char a[10]){ int i=0; char text[10]; while(a[i]!='\0') { text[i]=a[i]; i++; } text[i]='\0'; if( strcmp(text,"begin")==0) { printf("(1,begin)"); } else if( strcmp(text,"if")==0) { printf("(2,if)"); } else if( strcmp(text,"then")==0) { printf("(3,then)"); } else if( strcmp(text,"while")==0) { printf("(4,while)"); } else if( strcmp(text,"do")==0) { printf("(5,do)"); } else if( strcmp(text,"end")==0) { printf("(6,end)"); } else { printf("(10,%s)",text); }} main(){ int i=0,j=-1,l=0,x=0; char a[100],text[10]; printf("输入源程序,以#号结束:"); printf("\n"); gets(a); while(1) { if(a[i]>='0'&&a[i]<='9') { while(a[i]>='0'&&a[i]<='9') i++; l=0; for(++j;j ='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') {l=0; for(i;a[i]>='a' && a[i]<='z' ||a[i]>='A'&&a[i]<='Z';i++) { text[l]=a[i]; l++; } i--; text[l]='\0'; fing (text); } else { if(a[i]=='#') { printf("(0,#)"); break; } x=ccc(a,i); if(x==1) { j=i; } else if(x==2) { i++; j=i; } } i++; } printf("\n");}