版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科实验报告课程名称:编译原理实验项目:无符号数的词法分析程序(实验一)实验地点:计算机学院软件实验室专业班级:学号:学生姓名:指导教师:冯秀芳2013年11月16日、实验目的和要求1 培养学生初步掌握编译原理实验的技能。2 验证所学理论、巩固所学知识并加深理解。3.对学生进行实验研究的基本训练。、实验内容和原理实验一、无符号数的词法分析程序(4学时)内容:掌握词法分析的基本思想,并用高级语言编写无符号数的词法分析程序。要求:从键盘上输入一串字符(包括字母、数字等),最后以“;”结束, 编写程序识别出其中的无符号数。无符号数文法规则可定义如下: 无符号数 无符号实数 丨 无符号整数无符号实数
2、无符号整数 .数字串E比例因子|无符号整数E比例因子 比例因子 有符号整数有符号整数+ | -无符号整数无符号整数 数字串数字串 数字数字数字 0 1 2 3. 9读无符号数的程序流程图见下图.取下一字符开始'0=>w,p,j1=>e数字否岀错出错-数字否数值=dw*10+d=>w取下一字符N是.'否N疋'E'否1退一字r萨符1'整型'=>CJ1N三、主要仪器设备.Y数值=dw*10+d=>wj+1=>j取下一字符数字否,N-是+取下一字符-1=>eNY取下一字符N岀错数字否数值=dp*10+d=>
3、py取下一字符退一字符'实型'=>CJ1W*10C*P-J=>CJ2岀口PC机+Java语言编程环境四、实验结果与分析1.实验代码:package textl;import java.i o.ln putStreamReader;public class Text1 /* param args*/public static void main(String args) throws Exception / TODO Auto-ge nerated method stubin t p = 0, w = 0, w1 = 0, j = 0, i = 0, d = 0, e
4、 = 1;double w2 = 0;Stri ng str;(”请输入一串字符以;结束:");BufferedReader buf = new BufferedReader(new In putStreamReader(System.i n);str = buf.readL in e();char m = new char100;for (i = 0; i < str.length(); i+) mi = str.charAt(i);i = 0;while (i < str.le ngth() if (mi < 48 | mi > 57) else do d
5、 = mi - 48;w = w * 10 + d;j+;i+; while (mi >= 48 && mi <= 57);if (mi != '.') if (mi != 'E') (”整型数为:"+ w);j = 0;w = 0; else i+;if (mi = '-') e = -1;i+;if (mi >= 48 && mi <= 57) do d = mi - 48;p = p * 10 + d;i+; while (mi >= 48 && mi
6、<= 57);if (j > 1)w2 = w / (Math.pow(10.0, j - 1);实型数为:"+ w2+ "*10"+ (e * (p - j + 1);j = 0;w2 = 0;w = 0;p = 0; elseSystem.out.pri ntl n("您输入有误!"); else if (mi = '+') i+;if (mi >= 48 && mi <= 57) do d = mi - 48;p = p * 10 + d;i+; while (mi >= 48
7、 && mi <= 57);if (j > 1)w2 = 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.pri ntl n("您输入有误!"); else if (mi >= 48 && mi <= 57) do d = mi - 48;p = p *
8、10 + d;i+; while (mi >= 48 && mi <= 57);if (j > 1)w2 = w / (Math.pow(10.0, j - 1);实型数为:"+ w2+ "*10"+ (e * (p + j - 1);j = 0; w2 = 0;w = 0;p = 0; else(”您输入有误!");else i+;if (mi >= 48 && mi <= 57) do d = mi - 48;w1 = w1 * 10 + d;/ j = j + 1;i+; while (
9、mi >= 48 && mi <= 57); else(”您输入有误!");if (mi != 'E') w1'.'+ w1(”小数为:"+ w + '.' + w1);w = 0;w1 = 0;j = 0; else if (mi = 'E') i+;if (mi = '-') e = -1;i+;if (mi >= 48 && mi <= 57) do d = mi - 48;p = p * 10 + d;i+; while (mi &
10、gt;= 48 && mi <= 57);if (j > 1) w2 = w / (Math.pow(10.0, j - 1);(”实型数为:"+ "*10" + " "+ (e * (p - jw = 0;w1 = 0;j = 0;w2 = 0;p = 0; else (”实型数为:'+ "*10" + " "+ (e * (p - j+ w2 + 1);+ w + 1);w = 0;w1 = 0;j = 0;w2 = 0;p = 0; else您输入有误!"
11、;); else if (mi = '+') i+;if (mi >= 48 && mi <= 57) do d = mi - 48;p = p * 10 + d;i+; while (mi >= 48 && mi <= 57);if (j > 1) w2 = w / (Math.pow(10.0, j - 1);w1实型数为:"+ w2 + "*10" + " "+ (e * (p + j - 1);w = 0;w1 = 0;j = 0;w2 = 0;p = 0;
12、else '.'+ w1(”实型数为:"+ w + "*10" + " "+ (e * (p + j - 1);w = 0;w1 = 0;j = 0;w2 = 0;p = 0; else您输入有误!"); else if (mi >= 48 && mi <= 57) do d = mi - 48;p = p * 10 + d;i+; while (mi >= 48 && mi <= 57);if (j > 1) w2 = w / (Math.pow(10.0
13、, j - 1);w1实型数为:"+ w2 + "*10" + " "+ (e * (p + j - 1);w = 0;w1 = 0;j = 0;w2 = 0;p = 0; else '.'+ w1(”实型数为:"+ w + "*10" + " "+ (e * (p + j - 1); w = 0; w1 = 0;j = 0; w2 = 0;p = 0; else您输入有误!"); else(”您输入有误!");2.实验结果:问霓 俭Javadoc險声明 曰徒
14、利占吃v 已线止 n Textl Java 壷屯惶芋 1 D:J ava >j d b fnf av aw. ?x e ( 2 |清输入一串宝符以;结束:jj 2jj2.2j j222E5jj;整型敎为:2小数知2.2实型数为;2.22*107本科实验报告课程名称:编译原理实验项目:基本程序设计(实验二)实验地点:计算机学院606实验室专业班级:计Z1101 学号:2011001491学生姓名:李康达指导教师:段利国2013年11月23日一、实验目的和要求1.培养学生初步掌握编译原理实验的技能。2 .验证所学理论、巩固所学知识并加深理解。3.对学生进行实验研究的基本训练。、实验内容和原理
15、实验二、逆波兰式生成程序内容:掌握语法分析的基本思想,并用高级语言编写逆波兰式生成程序(4学时)要求:利用逆波兰式生成算法编写程序,将从键盘上输入的算术表达式(中缀表达式)转化成逆波兰式。逆波兰表达式的生成过程涉及到运算符的优先级,下表中列出几个常用运算符的优先关系。常用运算符优先关系矩阵关'7+-*/()+>>VVVV>->>VVVV>*>>>>VV>/>>>>VV>>>>>>V>(VVVVVV=)>>>>>>如上表所
16、示的优先关系矩阵表示了+, -, *, /等七种运算符之间的相互优先关系。“、v、= ”三种符号分别代表“大于”、“小于”、“相等”三种优先关 系。左边的“=”与右边的“(”之间没有优先关系存在,所以表中为空白。逆波兰表达式生成算法的关键在于比较当前运算符与栈顶运算符的优先关系,若当前 运算符的优先级高于栈顶运算符,则当前运算符入栈,若当前运算符的优先级低于栈顶运 算符,则栈顶运算符退栈。下面给出了逆波兰表达式生成算法的流程图。(为了便于比较相邻运算符的优先级,需要设立一个工作栈,用来存放暂时不能处理的运算符,所以又称运算符栈)。三、主要仪器设备PC机+Java语言编程环境四、实验结果与分析1
17、.实验内容:public class Text4 public static void main(String args) throws IOException / TODO Auto-ge nerated method stubint i = 0, j = 0;Stri ng str;(”请输入一串中序表达式:");BufferedReader buf = new BufferedReader(new In putStreamReader(System.i n);str = buf.readL in e();char m = new char20;for (i nt o = 0;
18、o < str.le ngth(); o+) mo = str.charAt(o);for (i nt o = str.le ngth(); o < 20; o+) mo=''char n = new char men gth;for (int o = 0; o < n.len gth; o+)n o=''逆波兰式为:");while (i <= str.le ngth() if (mi = ' ') if (nj = ' ') 结束!");System.exit(0); else do
19、 nj=''if (j >= 1)j-; while (nj !=''); j =j + 1; else if (isOperator(mi) while (isOperator(mi) if (nj = ' ') nj = mi;i+; else if (priority(nj,mi) = '<') j+;nj = mi;i+; else if (mi = ')') while (j > 0) if (nj = '(') nj=''; i+; else if (n
20、 0 = ' ') if (j >= 1)j-;i+; else nj=''if (j >= 1)j-; else i+;public static char priority(char operator1, char operator2) int a = 0, b = 0;= '>', '>', '<','<''<''>','>','>'J'<'J
21、9;<'Jv'>' ,'>','>'J'>'J'>'Jv'>' ,'>','>'J'>'J'>'Jv'>' ,'<','<'J'<'J'<'Jv'=' ,'>','>'J'>'J'>'JI IJ'>' ;char operatorPriorMatrixswitch (operatori) case '+':a = 0;b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 愚人节活动策划 合集15篇
- 广告专业实习报告15篇
- 心灵捕手观后感9篇
- 团学干部培训课程
- 徒弟代表发言稿15篇
- 语文学科研究性学习的思考与实践
- 智研咨询发布-2024年中国集成电路行业产业链全景分析及发展趋势预测报告
- 静力水准系统在合肥光源的安装调试及其在ATL模型研究中的应用
- 二零二五年度绿色建筑物业安全管理责任书3篇
- 二零二五年度个人家电产品分期购买合同
- 小学数学分数四则混合运算300题带答案
- 林下野鸡养殖建设项目可行性研究报告
- 心肺复苏术课件2024新版
- 大型商场招商招租方案(2篇)
- 2024年交管12123学法减分考试题库和答案
- 临床下肢深静脉血栓的预防和护理新进展
- 2024年山东泰安市泰山财金投资集团有限公司招聘笔试参考题库含答案解析
- 英语主语从句省公开课一等奖全国示范课微课金奖课件
- 年度工作总结与计划会议
- 医保按病种分值付费(DIP)院内培训
- 近五年重庆中考物理试题及答案2023
评论
0/150
提交评论