欢迎来到天天文库
浏览记录
ID:56394378
大小:380.00 KB
页数:14页
时间:2020-06-23
《太原理工大学编译原理实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本科实验报告课程名称:编译原理实验项目:无符号数的词法分析程序(实验一)基本程序设计(实验二)实验地点:致远楼303专业班级:软件14XX学号:学生姓名:指导教师:冯秀芳2017年6月27日一、实验目的和要求1.培养学生初步掌握编译原理实验的技能。2.验证所学理论、巩固所学知识并加深理解。3.对学生进行实验研究的基本训练。二、实验内容和原理实验一、无符号数的词法分析程序(4学时)内容:掌握词法分析的基本思想,并用高级语言编写无符号数的词法分析程序。要求:从键盘上输入一串字符(包括字母、数字等),
2、最后以“;”结束,编写程序识别出其中的无符号数。无符号数文法规则可定义如下:<无符号数>→<无符号实数>│<无符号整数><无符号实数>→<无符号整数>.<数字串>[E<比例因子>]│<无符号整数>E<比例因子><比例因子>→<有符号整数><有符号整数>→[+│-]<无符号整数><无符号整数>→<数字串><数字串>→<数字>{<数字>}<数字>→0123......9读无符号数的程序流程图见下图三.主要仪器设备PC机+Java语言编程环境四、实验结果与分析1.实验代码:packagetext1;i
3、mportjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassText1{/***@paramargs*/publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstubintp=0,w=0,w1=0,j=0,i=0,d=0,e=1;doublew2=0;Stringstr;System.out.println("请输入一
4、串字符以;结束:");BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));str=buf.readLine();charm[]=newchar[100];for(i=0;i5、6、m[i]>57){i++;}else{do{d=m[i]-48;w=w*10+d;j++7、;i++;}while(m[i]>=48&&m[i]<=57);//System.out.println("chesi"+m[i]);if(m[i]!='.'){if(m[i]!='E'){System.out.println("整型数为:"+w);j=0;w=0;}else{i++;if(m[i]=='-'){e=-1;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)w8、2=w/(Math.pow(10.0,j-1));System.out.println("实型数为:"+w2+"*10"+""+(e*(p-j+1)));j=0;w2=0;w=0;p=0;}elseSystem.out.println("您输入有误!");}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/(Math.pow(19、0.0,j-1));System.out.println("实型数为:"+w2+"*10"+""+(e*(p+j-1)));j=0;w2=0;w=0;p=0;}elseSystem.out.println("您输入有误!");}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/(Math.pow(10.0,j-1));System.out.println("实型10、数为:"+w2+"*10"+""+(e*(p+j-1)));j=0;w2=0;w=0;p=0;}elseSystem.out.println("您输入有误!");}}}else{i++;if(m[i]>=48&&m[i]<=57){do{d=m[i]-48;w1=w1*10+d;//j=j+1;i++;}while(m[i]>=48&&m[i]<=57);}elseSystem.out.println("您输入有误!");if(m[i]!='E'){System.out.println("小数为
5、
6、m[i]>57){i++;}else{do{d=m[i]-48;w=w*10+d;j++
7、;i++;}while(m[i]>=48&&m[i]<=57);//System.out.println("chesi"+m[i]);if(m[i]!='.'){if(m[i]!='E'){System.out.println("整型数为:"+w);j=0;w=0;}else{i++;if(m[i]=='-'){e=-1;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)w
8、2=w/(Math.pow(10.0,j-1));System.out.println("实型数为:"+w2+"*10"+""+(e*(p-j+1)));j=0;w2=0;w=0;p=0;}elseSystem.out.println("您输入有误!");}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/(Math.pow(1
9、0.0,j-1));System.out.println("实型数为:"+w2+"*10"+""+(e*(p+j-1)));j=0;w2=0;w=0;p=0;}elseSystem.out.println("您输入有误!");}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/(Math.pow(10.0,j-1));System.out.println("实型
10、数为:"+w2+"*10"+""+(e*(p+j-1)));j=0;w2=0;w=0;p=0;}elseSystem.out.println("您输入有误!");}}}else{i++;if(m[i]>=48&&m[i]<=57){do{d=m[i]-48;w1=w1*10+d;//j=j+1;i++;}while(m[i]>=48&&m[i]<=57);}elseSystem.out.println("您输入有误!");if(m[i]!='E'){System.out.println("小数为
此文档下载收益归作者所有