还剩5页未读,继续阅读
文本内容:
#includestdio.h#includestring.h#includectype.h#includestdlib.hchar,,,,key
[13]
[8]={”if“Jelse“Jwhile”Jfor”Jmain”Jim”void“char“folat”string“Jindude”Jprmtf”J scanf};」?#};char boundary
[10]={7,7,%CYtTJ」」「*「//八「=’「’」};char operation
[8]={+int err=0;〃判断是否是关键字int iskeywordchar*sint i;fori=0;i13;i++ifstrcmpkey[i],s==Oreturn i+1;return0;//判断是否为界符int isboundarychar chint i;fori=0;ill;i++ifch==boundary[i]return i+1;return0;〃判断是否是运算符int isoperationcharchint i;fori=0;i8;i++ifoperation[i]==chreturn i+1;return0;〃判断是否为数字int isszichar*sint i,l=strlens;for i=0;il;i++if!isdigits[i]break;}if i=lreturn1;}else一=if s[i];i++for;il;i++if!isdigits[i]break;}}elsereturn0;if i=lreturn1;elsereturn0;}〃判断是否为标识符int iswordchar*sint i=0,t=strlens;⑸〃判断是否为英文字母ifisalpha i]s[i]i++;for;it;i++〃判断是否为字母或数字if!isalnums[i]s[i]break;return1;else return0;}〃判断头文件int isdothchar*sint i,t=strlens;fori=0;it;i++if!isalphas[i]break;return0;elseifs[i]==7i++;ifs[i]==hreturn1;else return0;else return0;}void iswhatint*i,char*str,FILE*fileoutput〃判断字符串,并把相应类型存入文件FILE*file=fopen,,wenjian.txt,,ab+;,〃读写打开一个二进制文件,允许读或在文件末追加数据ab+:ifl!=*istr[-*i]=\O,;ifiskeywordstr〃向指定的文件写入一个字符串fputsstr,fileoutput;fputc\t,fileoutput;关键字,fputs fileoutput;fputc\n,fileoutput;else ifiswordstrfputsstcfileoutput;fputc\t,fileoutput;标识符fputs fileoutput;fputcCXn\fileoutput;}else ifisdothstrfputsstr,fileoutput;fputc\t,fileoutput;头文件,fputs fileoutput;fputcC\n fileoutput;zelse ifisszistrfputsstr,fileoutput;fputc\t,fileoutput;数字fputs fileoutput;fputc\n,fileoutput;}*i=0;}fclosefile;void writemessageFILE*f字符类型,fputs\t\n f;void errorfprintf%d lineerror!\n,0;exitl;void mainFILE*fileinput;FILE*fileoutput;charch,ct;char str
[20];int i;int q=O,ql=O;,,fileinput=fopen,,cc.cpp7r;fileoutput=fopen,d:\\outputl.txt,,wn;,writemessagefileoutput;iffileinput!=NULLi=0;do{ch=fgetcfileinput;str[i++]=ch;ifisboundarychifisboundarych==3q++;ifq%2==0〃引号的数量为偶数时标记为{ql=0;}0〃引号的数量为偶数时标记为else ql=l;1}iswhati,str,fileoutput;fputcch,fileoutput;fputc\t,fileoutput;边界符fputs fileoutput;fputc\n,fileoutput;}else ifisoperationchifq%2==0iswhati,str,fileoutput;ifch===ct=fgetcfileinput;二二七〃判断为士ifctfputc-Jileoutput;fputcf-Jileoutput;elsefputc=fileoutput;zelse{fputcch,fileoutput;fputc\t,fileoutput;运算符,fputs fileoutput;fputc\n,fileoutput;}elsefputcch,fileoutput;fputc\t,fileoutput;fputcCXtJileoutput;fputc\t,fileoutput;转义字符,fputs fileoutput;fputc\n,fileoutput;i=0;}}else ifch==\niswhatfi^trjileoutput;err++;i=0;}else ifch==0x20||ch==\tiswhati,str,fileoutput;elsei=0;}else ifql==lcontinue;}else ifisalnumch||ch==.}else ifch!=EOFerror;}}whileEOF!=ch;词法分析完毕!printf\n;fclosefileinput;fclosefileoutput;}。
个人认证
优秀文档
获得点赞 0