




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学软件学院实 验 报 告 专 业 软件工程 课程名称 编译原理 学 号 姓 名 辅导教师 张 静 成绩 实验日期2015.5.19实验时间14:0018:001实验名称 计算器的设计与实现2、实验目的掌握自上而下语法分析方法、自下而上语法分析方法3、实验要求(1)实验内容设计及实现计算表达式的计算器。 表达式中可包含+、-、*、/、(、)等运算符。(2)实验要求:对已给的一个二元式形式表达式,能够检查有无语法错误。并指定出错位置。将表达式的语法树输出(或将语法分析过程输出)。4、实验原理根据自上而下和自下而上的语法分析思想实现语法分析程序。5、实验步骤 (1)根据文法构造语法分析表。(2
2、)编写总控程序实现语法分析。6、 算法优先分析表及语法分析程序/算法优先分析表/计算器的设计与实现源代码.cpp#include<stdio.h>#include<stdlib.h>#define MaxSize 99void translate(char str,char exp) struct char dataMaxSize; int top; op; char ch; int i = 0,t = 0; op.top = -1; ch = stri; i+; while(ch != '0') switch(ch) case '(':
3、 op.top+;op.dataop.top=ch; break; case ')': while(op.dataop.top != '(') expt=op.dataop.top; op.top-; t+; op.top-; break; case '+': case '-': while(op.top != -1&&op.dataop.top != '(') expt = op.dataop.top; op.top-; t+; op.top+; op.dataop.top = ch; break
4、; case '*': case '/': while(op.dataop.top = '/'|op.dataop.top = '*') expt = op.dataop.top; op.top-; t+; op.top+; op.dataop.top = ch; break; case ' ': break; default: while(ch >= '0'&&ch <= '9') expt = ch;t+; ch = stri;i+; i-; expt
5、 = ' ' t+; ch = stri; i+; while(op.top != -1) expt = op.dataop.top; t+; op.top-; expt = '0' float cal_value(char exp) struct float dataMaxSize; int top; st; float d; char ch; int t = 0; st.top = -1; ch = expt; t+; while(ch != '0') switch(ch) case '+': st.datast.top-1
6、= st.datast.top-1+st.datast.top; st.top-; break; case '-': st.datast.top-1 = st.datast.top-1-st.datast.top; st.top-; break; case '*': st.datast.top-1 = st.datast.top-1*st.datast.top; st.top-; break; case '/': if(st.datast.top != 0) st.datast.top-1=st.datast.top-1/st.datast.to
7、p; else printf("n提示:error"); exit(1); st.top-; break; default: d=0; while(ch >= '0'&&ch <= '9') d = 10*d+ch-'0' ch = expt; t+; st.top+; st.datast.top = d; ch = expt; t+; return st.datast.top;int main() char ch; while(1) char strMaxSize,expMaxSize; prin
8、tf(">>输入一个表达式:n"); gets(str); printf(">>原表达式:%sn",str); translate(str,exp); printf(">>逆波兰式:%sn",exp); printf(">>计算结果:%gnn",cal_value(exp); printf(">>是否进行下一个运算(Y/N)?:"); scanf("%c",&ch); if(ch='Y' | ch='y') gets(str); else break; /system("pause"); return 0;7、 测试及结果1、 加减法运算2、 乘除法运算3、 带()运算4、 四则运算5、 容错处理8、心得本次课程设计是实现一个简易的计算器,这次课程设计采用逆波兰式的知识,这可以很好的表示简单算术表达式,其优点在于易于计算机处理表达式。本次设计使我进一步端正了我的学习态度,学会了实事求是,对自己要严格要求。我觉得动手做设计之前,头脑里必须清楚该怎么做,这一点是很重要的。就目前来说,我的动手能力虽然差一点,但我想
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工商银行2025西宁市秋招笔试EPI能力测试题专练及答案
- 2025年3D打印技术的个性化医疗
- 2025年3D打印的医疗植入物研发
- 工商银行2025天津市秋招群面模拟题及高分话术
- 交通银行2025宜春市秋招笔试创新题型专练及答案
- 2025行业品牌建设成功案例
- 交通银行2025阜新市信息科技岗笔试题及答案
- 邮储银行2025白山市半结构化面试15问及话术
- 建设银行2025太原市秋招结构化面试经典题及参考答案
- 中国银行2025巴中市秋招笔试专业知识题专练及答案
- 机械动力学PPT完整全套教学课件
- 年产2.03万吨高端精细化学品及5G新材料项目环评报告书
- 群众文化副高答辩问题及答案
- 弱电维护保养合同
- GB/T 41972-2022铸铁件铸造缺陷分类及命名
- 主编-孙晓岭组织行为学-课件
- 新闻传播中的媒介素养课件
- 中医刮痧法诊疗操作评分标准
- 《师范生教师职业能力证书》样式及说明
- 学校体育学(第三版)ppt全套教学课件
- 住建部《建筑业10项新技术(2017版)》解读培训课件
评论
0/150
提交评论