欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    编译原理实验-中间代码生成(共5页).doc

    • 资源ID:13918694       资源大小:82KB        全文页数:5页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    编译原理实验-中间代码生成(共5页).doc

    精选优质文档-倾情为你奉上 实验四 中间代码生成一实验目的:掌握中间代码的四种形式(逆波兰式、语法树、三元式、四元式)。二实验内容:1、 逆波兰式定义:将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表达式也称做后缀式。2、 抽象(语法)树:运算对象作为叶子结点,运算符作为内部结点。3、 三元式:形式 序号:(op,arg1,arg2)4、 四元式:形式 (op,arg1,arg2,result)三、以逆波兰式为例的实验设计思想及算法 (1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。(2)读入一个用中缀表示的简单算术表达式,为方便起见,设该简单算术表达式的右端多加上了优先级最低的特殊符号“#”。 (3)从左至右扫描该算术表达式,从第一个字符开始判断,如果该字符是数字,则分析到该数字串的结束并将该数字串直接输出。 (4)如果不是数字,该字符则是运算符,此时需比较优先关系。 做法如下:将该字符与运算符栈顶的运算符的优先关系相比较。如果,该字符优先关系高于此运算符栈顶的运算符,则将该运算符入栈。倘若不是的话,则将此运算符栈顶的运算符从栈中弹出,将该字符入栈。 (5)重复上述操作(1)-(2)直至扫描完整个简单算术表达式,确定所有字符都得到正确处理,我们便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。 四、程序代码:/这是一个由中缀式生成后缀式的程序 #include<iostream.h>#include<string.h>#include<math.h>#include<ctype.h>#define maxbuffer 64void main()char display_out(char out_chmaxbuffer, char ch32);/int caculate_array(char out_ch32);static int i=0;static int j=0;char chmaxbuffer,smaxbuffer,outmaxbuffer;cout<<"请输入中缀表达式: "cin>>ch;for(i=0;i<maxbuffer;i+)outi=chi;cout<<"请确认您输入的表达式: "while(outj!='#')cout<<outj;j+;cout<<'#'<<endl;display_out(s,out);/caculate_array;char display_out(char out_ch32,char ch) int top=-1;int i=0,datamaxbuffer,n;int j=0;char sta20;while(chi!='#')if(isalnum(chi)while(isalnum(chi)out_chj=chi;j+;i+;out_chj=' 'j+; elseswitch(chi)case '+':case '-': if(statop='('|top=-1)top+; statop=chi;i+;else /j-;out_chj=statop;j+;top-; /i+;break;/break;case '*':case '/':if(statop='*'&&statop='/')out_chj=statop;j+;/i+;top-;elsetop+;statop=chi;i+;break ;/break;case '(':top+; statop=chi;i+;break;case ')':if(statop='(')top-;i+;if(top=-1)/cout<<"错误: 第"<<j<<"个位置的")"没有找到与之匹配的"(""chi='#'j=0;else /while(statop!=()out_chj=statop;top-;j+;/break;break;/*case #: out_chj=#;j+;break;*/default:cout<<" your input is error"<<endl;chi='#'j=0;break;while(top!=-1)out_chj=statop;j+;top-;out_chj='#'n=0;cout<<"逆波兰表达式为: "while(out_chn!='#')cout<<out_chn;n+;cout<<endl;j=0;return out_chmaxbuffer;五、实验结果:要求:自己给出3个测试用例,观察结果。如下例。图表 1专心-专注-专业

    注意事项

    本文(编译原理实验-中间代码生成(共5页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开