无符号数的词法分析程序_第1页
无符号数的词法分析程序_第2页
无符号数的词法分析程序_第3页
无符号数的词法分析程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include#include#include#includeusingnamespacestd;intw=0;/尾数累加器intp=0;/指数累加器intj=0;/十进制小数位数计数器inte=1;/用来记录十进制数的符号,当指数为正时为1,为负时为-1inti=0;/用来标志元素位置intd=0;/用来表示每个数值型元素对应的数值constintN=40;用来确定输入识别符的最大长度chardataN;存放输入的识别符boolis_digit;/标志是否是数字stringCJ1;确定是整形还是实型doubleCJ2;/记数值/函数声明lengthisvoidcheck(charc);/检

2、查首字母是否是数字的函数voiddeal_integer(charc);/处理识别符的整数部分voiddeal_point(charc);/用来处理小数部分voiddeal_index(charc);/用来处理指数部分voids_next();/确定实型voidz_next();确定整型voidlast();/计算CJ2voiderror。;/程序中错误处理程序voiddeal();处理函数主体intmain()/主函数lengthiscoutdata;deal();处理函数主体last();/计算CJ2system(pause);return0;voidcheck(charc)/判断输入的首

3、字母是否是数字is_digit=isdigit(c);while(is_digit!=true)输入的首字母不是数字时coutvvnError!Tryagain.vvendl;要求重新输入cindata;check(data0);voiddeal_integer(charc)处理识别符的整数部分d=(int)c-48;w=w*10+d;i+;if(isdigit(datai)!=O)下一个仍是数值时,调用程序本身deal_integer(datai);voiddeal_point(charc)用来处理小数部分inttemp=i;if(isdigit(c)!=0)是数值字符时deal_integ

4、er(c);elseerror();/错误处理程序deal();处理函数主体j=i-temp;记录十进制小数位数voiddeal_index(charc)用来处理指数部分if(c=-)e=-1;i+;是-号时elseif(c=+)i+;是+号时elseif(isdigit(c)=false)/非数值字符时error();/错误处理程序deal();处理函数主体elsed=(int)c-48;把输入字符转换为整型gotopro2;if(isdigit(datai)!=0)pro1:d=(int)(datai)-48;pro2:p=p*10+d;i+;if(isdigit(datai)!=O)是数

5、值字符时gotopro1;elseif(datai!=O)非结束标志error();/错误处理程序deal();处理函数主体elses_next();/确定实型voids_next()/确定实型i-;/退一个字符CJ1=实型;voidz_next()确定整型i-;/退一个字符CJ1=整型;voidlast()/计算CJ2CJ2=w*pow(double)10,e*p-j);coutvvCJIvv:vvCJ2vvendl;输出voiderror()/程序中错误处理程序coutvvnError!Tryagain.vvendl;重新输入数据cindata;p=0;w=0;j=0;/所有全局变量重新初始化e=1;i=0;d=0;/exit(0);voiddeal()check(dataO);判断输入的首字母是否是数字deal_integer(datai);处理识别符的整数部分if(datai=.)deal_point(data+i);用来处理小数部分if(datai=e|datai=E)如果是e或E时deal_index(data+i);用来处理指数部分elseif(datai!=0)error();/错误处理程序deal();处理函数主体elses_next();/确定实型elseif(datai=e|datai=E)如果是e或E时deal_index

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论