太原理工大学编译原理实验课件.doc本科实验报告课程名称:编译原理实验项目:无符号数的词法分析程序(实验一)基本程序设计(实验二)实验地点:致远楼303专业班级:软件14XX学号:学生姓名:指导教师:冯秀芳2017年6月27日1一、。、巩固所学知识并加深理解。。二、实验内容和原理实验一、无符号数的词法分析程序(4学时)内容:掌握词法分析的基本思想,并用高级语言编写无符号数的词法分析程序。要求:从键盘上输入一串字符(包括字母、数字等),最后以“;”结束,编写程序识别出其中的无符号数。无符号数文法规则可定义如下:<无符号数>→<无符号实数>│<无符号整数><无符号实数>→<无符号整数>.<数字串>[E<比例因子>]│<无符号整数>E<比例因子><比例因子>→<有符号整数><有符号整数>→[+│-]<无符号整数><无符号整数>→<数字串><数字串>→<数字>{<数字>}<数字>→0123......9读无符号数的程序流程图见下图2取下一字符开始数字否出错N0=>w,p,jY1=>e数值=〉dYw*10+d=>wj+1=>j出错N数字否YY取下一字符数值=〉dw*10+d=>w数字否Y取下一字符NY是‘E’否Y数字否取下一字符N是‘.’否YN是‘-’否Y-1=>e是‘E’否NN是‘+’否Y取下一字符N退一字符数字否N出错‘整型’=〉CJ1Y数值=〉dp*10+d=>pNY取下一字符数字否N退一字符‘实型’=>CJ1W*10C*P-J=>+Java语言编程环境3四、:packagetext1;;;lassText1{/******@paramargs*/publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstubintp=0,w=0,w1=0,j=0,i=0,d=0,e=1;doublew2=0;Stringstr;("请输入一串字符以;结束:");BufferedReaderbuf=newBufferedReader(newInputStreamReader());str=();charm[]=newchar[100];for(i=0;i<();i++){m[i]=(i);}i=0;while(i<()){if(m[i]<48||m[i]>57){i++;}else{do{d=m[i]-48;w=w*10+d;j++;i++;}while(m[i]>=48&&m[i]<=57);//("chesi"+m[i]);if(m[i]!='.'){if(m[i]!='E'){("整型数为:"+w);j=0;w=0;}else{i++;if(m[i]=='-'){e=-1;i++;if(m[i]>=48&&m[i]<=57){do{4d=m[i]-48;p=p*10+d;i++;}while(m[i]>=48&&m[i]<=57);if(j>1)w2=w/((,j-1));("实型数为:"+w2+"*10"+""+(e*(p-j+1)));j=0;w2=0;w=0;p=0;}("您输入有误!");}elseif(m[i]=='+'){i++;if(m[i]>=48&&m[i]<=57){do{d=m[i]-48;p=p*10+d;i++;}while(m[i]>=48&&m[i]<=57);if(j>1)w2=w/((,j-1));("实型数为:"+w2+"*10"+""+(e*(p+j-1)));j=0;w2=0;w=0;p=0;}("您输入有误!");}else{if(m[i]>=48&&m[i]<=57){do{d=m[i]-48;p=p*10+d;i++;}while(m[i]>=48&&m[i]<=57);if(j>1)w2=w/((,j-1));("实型数为:"+w2+"*10"+""+(e*(p+j-1)));j=0;w2=0;w=0
太原理工大学编译原理实验课件 来自淘豆网m.daumloan.com转载请标明出处.