预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include"stdio.h"/*定义I/O库所用的某些宏和变量*/ #include"string.h"/*定义字符串库函数*/ #include"conio.h"/*提供有关屏幕窗口操作函数*/ #include"ctype.h"/*分类函数*/ charprog[80]={'\0'}, token[8];/*存放构成单词符号的字符串*/ charch; intsyn,/*存放单词字符的种别码*/ n, sum,/*存放整数型单词*/ m,p;/*p是缓冲区prog的指针,m是token的指针*/ char*rwtab[6]={"begin","if","then","while","do","end"}; voidscaner(){ m=0; sum=0; for(n=0;n<8;n++) token[n]='\0'; ch=prog[p++]; while(ch=='') ch=prog[p++]; if(isalpha(ch))/*ch为字母字符*/{ while(isalpha(ch)||isdigit(ch))/*ch为字母字符或者数字字符*/{ token[m++]=ch; ch=prog[p++];} token[m++]='\0'; ch=prog[p--]; syn=10; for(n=0;n<6;n++) if(strcmp(token,rwtab[n])==0)/*字符串的比较*/{ syn=n+1; break;}} else if(isdigit(ch))/*ch是数字字符*/{ while(isdigit(ch))/*ch是数字字符*/{ sum=sum*10+ch-'0'; ch=prog[p++];} ch=prog[p--]; syn=11;} else switch(ch){ case'<':m=0;token[m++]=ch;ch=prog[p++]; if(ch=='>'){ syn=21; token[m++]=ch;} elseif(ch=='='){ syn=22; token[m++]=ch;} else{ syn=20; ch=prog[p--];} break; case'>':m=0;token[m++]=ch;ch=prog[p++]; if(ch=='='){ syn=24; token[m++]=ch;} else{ syn=23; ch=prog[p--];} break; case':':m=0;token[m++]=ch;ch=prog[p++]; if(ch=='='){ syn=18; token[m++]=ch;} else{ syn=17; ch=prog[p--];} break; case'+':syn=13;token[0]=ch;break; case'-':syn=14;token[0]=ch;break; case'*':syn=15;token[0]=ch;break; case'/':syn=16;token[0]=ch;break; case'=':syn=25;token[0]=ch;break; case';':syn=26;token[0]=ch;break; case'(':syn=27;token[0]=ch;break; case')':syn=28;token[0]=ch;break; case'#':syn=0;token[0]=ch;break; default:syn=-1;}} main() { printf("\n\nThesignificanceofthefigures:\n" "1.figures1to6saidKeyword\n" "2.figures10and11saidOtherindicators\n" "3.figures13to28saidOperators\n"); p=0; printf("\npleaseinputstring:\n"); do{ ch=getchar(); prog[p++]=ch; }while(ch!='#'); p=0; do{ scaner(); switch(syn){ case11:printf("(%d,%d)\n",syn,sum);break; case-1:printf("\nERROR;\n");break; default:printf("(%d,%s)\n",syn,token); } }while(syn!=0); getch(); } 对源程序beginx:=9:ifx>9thenx:=2*x+1/3;end#