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

下载本文档

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

文档简介

#include#include#include#includeusing namespace std;int w=0; /尾数累加器 int p=0; /指数累加器 int j=0; /十进制小数位数计数器 int e=1; /用来记录十进制数的符号,当指数为正时为1,为负时为-1 int i=0; /用来标志元素位置 int d=0; /用来表示每个数值型元素对应的数值 const int N=40;/用来确定输入识别符的最大长度char dataN;/存放输入的识别符 bool is_digit; /标志是否是数字 string CJ1;/确定是整形还是实型 double CJ2;/记数值 /函数声明 void check(char c);/检查首字母是否是数字的函数 void deal_integer(char c);/处理识别符的整数部分 void deal_point(char c);/用来处理小数部分 void deal_index(char c);/用来处理指数部分void s_next();/ 确定实型 void z_next();/确定整型 void last();/ 计算 CJ2void error();/程序中错误处理程序 void deal();/处理函数主体 int main() /主函数 coutplease input your data,and its maximum length is N:data; deal();/处理函数主体 last();/ 计算 CJ2 system(pause); return 0; void check(char c) /判断输入的首字母是否是数字 is_digit=isdigit(c); while(is_digit!=true)/输入的首字母不是数字时 coutnError! Try again.data; check(data0); void deal_integer(char c)/处理识别符的整数部分 d=(int)c-48; w=w*10+d; i+; if(isdigit(datai)!=0)/下一个仍是数值时,调用程序本身 deal_integer(datai); void deal_point(char c)/用来处理小数部分 int temp=i; if(isdigit(c)!=0)/是数值字符时 deal_integer(c); else error(); /错误处理程序 deal();/处理函数主体 j=i-temp;/记录十进制小数位数 void deal_index(char c)/用来处理指数部分 if(c=-) e=-1;i+;/是-号时 else if(c=+) i+;/是+ 号时 else if(isdigit(c)=false) /非数值字符时 error();/错误处理程序 deal();/处理函数主体 else d=(int)c-48;/把输入字符转换为整型 goto pro2; if(isdigit(datai)!=0)pro1: d=(int)(datai)-48;pro2: p=p*10+d; i+; if(isdigit(datai)!=0)/是数值字符时 goto pro1; else if(datai!=0)/非结束标志 error();/错误处理程序 deal();/处理函数主体 else s_next(); / 确定实型 void s_next()/ 确定实型 i-;/退一个字符 CJ1=实型; void z_next()/确定整型 i-;/退一个字符 CJ1=整型; void last()/ 计算 CJ2 CJ2=w*pow(double)10,e*p-j); coutCJ1: CJ2endl;/输出 void error()/程序中错误处理程序 coutnError! Try again.data; p=0;w=0;j=0; /所有全局变量重新初始化 e=1;i=0;d=0; /exit(0); void deal() check(data0);/判断输入的首字母是否是数字 deal_integer(datai);/处理识别符的整数部分 if(datai=.) deal_point(data+i);/用来处理小数部分 if(datai=e|datai=E)/如果是e或E时 deal_index(data+i);/用来处理指数部分 else if(datai!=0) error();/错误处理程序 deal();/处理函数主体 else s_next();/ 确定实型 else if(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

提交评论