欢迎来到天天文库
浏览记录
ID:57441947
大小:165.48 KB
页数:19页
时间:2020-08-17
《编译原理课程报告太原理工大学.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本科实验报告课程名称:编译原理实验项目:无符号数的词法分析程序实验地点:迎西校区4506机房专业班级:学号:学生姓名:指导教师:2012年5月一.实验内容:掌握词法分析的基本思想,并用高级语言编写无符号数(包括整形和实数)的词法分析程序。二.实验要求:从键盘上输入一串字符(包括字母,数字等),最后以”;”结束,编写程序识别出其中的无符号数。三.实验源代码:#include#include#include#includeusingnamespacestd;in
2、tw=0;//尾数累加器intp=0;//指数累加器intj=0;//十进制小数位数计数器inte=1;//用来记录十进制数的符号,当指数为正时为1,为负时为-1inti=0;//用来标志元素位置intd=0;//用来表示每个数值型元素对应的数值constintN=40;//用来确定输入识别符的最大长度chardata[N];//存放输入的识别符boolis_digit;//标志是否是数字stringCJ1;//确定是整形还是实型doubleCJ2;//记数值//函数声明voidcheck(charc);//检查首字母是否是
3、数字的函数voiddeal_integer(charc);//处理识别符的整数部分voiddeal_point(charc);//用来处理小数部分voiddeal_index(charc);//用来处理指数部分voids_next();//确定实型voidz_next();//确定整型voidlast();//计算CJ2voiderror();//程序中错误处理程序voiddeal();//处理函数主体intmain(){//主函数cout<<"pleaseinputyourdata,anditsmaximumlengthi
4、s"<>data;deal();//处理函数主体last();//计算CJ2system("pause");return0;}voidcheck(charc)//判断输入的首字母是否是数字{is_digit=isdigit(c);while(is_digit!=true){//输入的首字母不是数字时cout<<"Error!Tryagain.."<>data;check(data[0]);}}voiddeal_integer(c
5、harc){//处理识别符的整数部分d=(int)c-48;w=w*10+d;i++;if(isdigit(data[i])!=0)//下一个仍是数值时,调用程序本身deal_integer(data[i]);}voiddeal_point(charc){//用来处理小数部分inttemp=i;if(isdigit(c)!=0)//是数值字符时deal_integer(c);else{error();//错误处理程序deal();//处理函数主体}j=i-temp;//记录十进制小数位数}voiddeal_index(cha
6、rc){//用来处理指数部分if(c=='-'){e=-1;i++;}//是'-'号时else{if(c=='+')i++;//是'+'号时else{if(isdigit(c)==false)//非数值字符时{error();//错误处理程序deal();//处理函数主体}else{d=(int)c-48;//把输入字符转换为整型gotopro2;}}}if(isdigit(data[i])!=0)pro1:d=(int)(data[i])-48;pro2:p=p*10+d;i++;if(isdigit(data[i])!=
7、0)//是数值字符时gotopro1;elseif(data[i]!=' '){//非结束标志error();//错误处理程序deal();//处理函数主体}elses_next();//确定实型}voids_next(){//确定实型i--;//退一个字符CJ1="实型";}voidz_next(){//确定整型i--;//退一个字符CJ1="整型";}voidlast(){//计算CJ2CJ2=w*pow((double)10,e*p-j);cout<8、r(){//程序中错误处理程序cout<<"Error!Tryagain.."<>data;p=0;w=0;j=0;//所有全局变量重新初始化e=1;i=0;d=0;//exit(0);}voiddeal(){check(data[0]);//判断输
8、r(){//程序中错误处理程序cout<<"Error!Tryagain.."<>data;p=0;w=0;j=0;//所有全局变量重新初始化e=1;i=0;d=0;//exit(0);}voiddeal(){check(data[0]);//判断输
此文档下载收益归作者所有