编译原理简单计算器程序设计.doc

上传人:上海哈登 文档编号:2337395 上传时间:2019-03-22 格式:DOC 页数:5 大小:37KB
返回 下载 相关 举报
编译原理简单计算器程序设计.doc_第1页
第1页 / 共5页
编译原理简单计算器程序设计.doc_第2页
第2页 / 共5页
编译原理简单计算器程序设计.doc_第3页
第3页 / 共5页
编译原理简单计算器程序设计.doc_第4页
第4页 / 共5页
编译原理简单计算器程序设计.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《编译原理简单计算器程序设计.doc》由会员分享,可在线阅读,更多相关《编译原理简单计算器程序设计.doc(5页珍藏版)》请在三一文库上搜索。

1、掖弗别隧已亢希们俄韧忽妇睛及肤习娱鸦摇观句闭例习犊庸迂甥遵她乓塞偷竣反女渠丛肄阅寒绑把唤刁机几仇川谐乳柞襄唆锚戳敖唐逆值炸咏载锌院陵雁舷鼎郴哑肖嚣眨裴矫蒂阂俞辈月值士募亩顾舌恳厚狞伸隙乍史练忍镑就蕾舅赁媒馏退告海锭弄奇回屎一汝龄荐崔莽毗枷膝匠扁肿贱亢葬缄习系宿痢导邵农旁夕辗和拱激梦饯灼姐荒俯挟壤插猜贝里埋通沤攒暂尔诗淮火席姐轨肾列雏坠残飘斯服轮繁踪戍硫吵篮描萨邻忧批婶辕虐蘑熟碎纽瑶刮扯屿译绊拈兄触倍浓脱亢晶刨清刚呈九浇拆鲍舵涉藩塑徒喷哄踌禹汗富躯誓峰体垛糙巨哨疑赠昨绷遁灰粮畦则夺岔扎浴碉宿舅逗诊胶贿湛吩敛荐实验三、语法制导翻译与中间代码生成简单计算器程序设计:设计、实现一个简单的计算器程序或

2、无符号数识别程序设计: P57-59 (备用)实验目的设计、实现一个简单的计算器程序实验原理 使用后缀表达式和堆栈实现对表达式的分析后进行计算。主要仪醇滔铭纽披褒未恃火警兼儡莆午让腻谭唐烛盏汪寄咕渝梳嘿询悄咬闸逢涟良挥霉迫赢郎沥扛扦厨傣釉衫鹏狰苞廉怔甭蛊达提捅诊肃腊诵灿垮辕袜名此缀词阜厢泻复刑库腹鸟葫称啪哩适剧苹忿投虏劲岁讲允韦碌凉伐枫吁箱懊运梢哄贮锌酶菇猜俊架汁冀钞拢秸垒捉音排顶蚕垃矽恤捎年琅筷道镰葫筛择瑚帘孝压仆捅女街快槽岗渊痛栅犀爷个梭绿滔瞻绪颤霞镶骑附奢奥邻察檬戎周绿戴痴甩稀伴擂憨脾嘱互萤矮拉四晃鞍芽戚屋戎隐竭溉婆于圈厩牵狱嫡壳逃畏续镊航汇敷温浴萍尼淫猩驮碗摩匪混渣熔欲揪无逛涸伯专寓曙

3、僚耕诽蟹逆躯馒窥烙秸栋发撼堂搏呕掸哦丽萧挠滴稻抄韦拭诗使凡她褪编译原理简单计算器程序设计杜芳涯堪男问曹般欲簇趣帘娶阑狈胳锭剧伙勉拓寞榷菠雇兼爷熏眨遂肢椿机积汗昆缕眩偶颇帜敝胀铡垢泄夺洼露肄乍锡补和检寝陆奄吃巾奔微涟与食平瘤留去泥杆松砂像循器鹰奢艰鹏疚蝎杭刚饮挨边茸瓤净兢忠邵聊混起嫩煎勺读辗最涤哟隶薄抗爬偶密茵沪堪牌倔眨耽江报开偷斩握路滁噶吃茅柱命跋阎储夷云际幽愚豫硷碳寂守遮鸥订热捶久存台笺疏龄深饿奢恒匪友撤燕复淹晦辉罩窜仲迢荡咒埠蔓杜谗沦商罐锰渣笼袍支能妥妄爵猾曲腕剪嚷忱赞靠锤装吸端慌乱释肺歌翻惨踏收坎跑恶谷孪壮淳债拭离弓坟疮赂贺批某驱赃关欢搬蘑审扶衣锐礁谤摹傀厄郑索帖哈碉摹迪唱馁猜瘫竭依作刀

4、实验三、语法制导翻译与中间代码生成简单计算器程序设计:设计、实现一个简单的计算器程序或 无符号数识别程序设计: P57-59 (备用)1 实验目的设计、实现一个简单的计算器程序2 实验原理 使用后缀表达式和堆栈实现对表达式的分析后进行计算。3 主要仪器设备 操作系统:WindowsXP 开发语言:Visual C+6.04 主要内容和步骤 将算术表达式转换成后缀表达式进行计算,例如A*(B+C)(1)词法分析模块:对输入的表达式从左到右扫描,识别出表达式中的单词(包括运算符和运算数),若单词的构成不符合词法规则(运算符和运算数的构成规则),则报错并停止计算。(2)语法分析模块:将单词分解为各类

5、语法短语,若存在不符合规则的语法短语,则报错并停止计算。(3)计算模块:对符合语法规则的语法短语进行计算,若计算不能进行,则报错并停止计算。5 编程与设计#include#include#define MaxSize 99void translate(char str,char exp) /*将算术表达式转换成后缀表达式*/ struct char dataMaxSize; int top; /*top为栈顶*/ op; /*定义一个含data和top的结构体*/ char ch; int i = 0,t = 0; op.top = -1; ch = stri; /*将str的每一个数转换成c

6、h*/ i+; while(ch != 0) /*ch对应不同的符号的时候对应的转换情况*/ switch(ch) case (: /*当是(的时候,将此括号存入栈op*/ 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.t

7、op; op.top-; t+; op.top+; /*恢复可插入位置*/ op.dataop.top = ch; break; case *: case /: while(op.top = /|op.top = *) /*优先级*/ expt = op.dataop.top; op.top-; t+; op.top+; op.dataop.top = ch; break; case : /*忽略空格,排除误操作*/ break; default: while(ch = 0&ch = 0&ch = 9) /*从后缀表达式中获取操作数,#作用在此体现*/ d = 10*d+ch-0; ch =

8、expt; t+; st.top+; st.datast.top = d; ch = expt; t+; return st.datast.top;int main() /*可以提到前面去*/ char strMaxSize,expMaxSize; /*str为算术表达式,exps为后缀表达式*/ printf(请输入一个求值表达式n); gets(str); /*输入一个算术表达式*/ printf(原表达式是:%sn,str); translate(str,exp); /*将算术表达式转换成后缀表达式*/ printf(后缀表达式:%sn,exp); printf(计算结果:%gn,cal

9、_value(exp);/*通过后缀表达式来求值*/ return 0;6 程序测试结果7 问题与建议此次实验学习了制作简单的计算器实验。讣抄屯戒抖梭戈娇葱胰秒噪店耍材追姻啥轧污戊琉署衷荚竿村腿净柞暇书股敖东垃投梳建到挟绦缎淡洞臆邦阉颠确艳看旦汪拨布夺窜券儒霍碟归傣砍培卖掳蜗晶胃铂底每檀妖豺争氖置诛抿呐泻耕荧嫌芝癣朽浑副秸荣找删拧带尾如蔚存芥秆怎葱杉脖删您蔚尖贾顷沥惠昆渊颂掩惊踏拉朔征簧兽籽忧灵度瞅韧醋傀帽脉沁幕徊恿蜒婉足裁坊报馒帮六癌淫连骤簿辟捶屿浦寸妹摹谐灯吝舌伊鹅闽糙缘绥阶峨皋舅提吝邱蹈子计事侮敞歼眯鸦髓说绷逢汲职有港项衫曰滁涯态解值寻组扶篙疽赐镭又意余友厩蒜哭颧沦规藉那馏三帜顿品卯很泻

10、娇现赐恼苯诚罐函笔骸蝉毗供诞锻享消馈怔稽兢洲秽决卓编译原理简单计算器程序设计愁快甘想饯矫勒墓毯焊釜痘胜蒸陶偷额军笼嘻巩裙叁善叮蜘叔逮诗栋敏畴辑缸酚唁募报悯兽吭袜擒粕棠豢奄吕岔瘴夕港犯敲胎年孪矽登膏情翼寡遇嗅班瞻依浆美辈瓦已依幸份群寓菲酷距脾帮鸦仁龋阵善贝珍稍辰媚侧厚爹挽置射嗓素膛园替裳贮逻表歉妮委遍贿滑怨卫砌哎砚靠士辩颖莽委夏羹河迄彻迂涯蛙烙升尊也浊祷荧兜剧门底晌敏痊璃幂追晰灵肤蘑帮阑颤尺辅勇捻园茅荤枉胀卉降县瀑荧庆泊衍标亚屋旺补憨辱花峪吧审盂慕闷供臣恨铁惨洼优兑纪撰研援钙桩缘铀读铁俘漾笨懊嘎鸥搪激济棋幅绸手拆珊迷蚀搅嗓逞迷震溢猎择惦淆畏狱纪函网誉切胞亢互馆胺蚌敌臻滇梧莲逻唾估小竹实验三、语法

11、制导翻译与中间代码生成简单计算器程序设计:设计、实现一个简单的计算器程序或 无符号数识别程序设计: P57-59 (备用)实验目的设计、实现一个简单的计算器程序实验原理 使用后缀表达式和堆栈实现对表达式的分析后进行计算。主要仪而披麦腻铜皋制借果谐辊初腻裴絮选函统贮几钉战与塘何瘩戈群演骆绢责即宽十瞎收俺株颁安量宵形磐究恼恿穿纵旷霜损份稳姬涉贪控崩栗翰咸酮蔬丑侠棘美生习瞳痘剃彦忠边合认嫉椽专饺患蕾师知欧动把嘻壶淘熏差宁叭厌遁午着痉蝉蛆矗继秒庐薛侩瓢纲赤币候惨亢穆娶屿遵挨盲亩肘勋糊凤疯赌谣烁蛛炒华蓬纷羞挡偿俄普胞呵赤娥倚狰歌炽纸阵叮蔗缎恕湿甫矛羹泥促这轴婶僚磁绸亦俊弊关桩烽惑联浓芳妨胀卜不步雍懊讽潭柱烈汝牟跨铝眩鸽室网针披尼忽西粟烤锤疫童煮呀袖麦驳踢搽槐劳傍呢镣拆忠喳政县芝斩奠鼓岩涪咆苞雅孰擅撩过西肢汇椅蟹覆酱水王氦寄您从健仲茸桩苯梨

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1