电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

目标代码中间代码生成四元式设计文档

10页
  • 卖家[上传人]:博****1
  • 文档编号:474540421
  • 上传时间:2022-12-25
  • 文档格式:DOC
  • 文档大小:74KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、word工程第一神刀公子编译原理实验实验名称:中间代码生成程序设计指导教师: 轻语 专 业: 计算机科学与技术 班 级: LOL 学 号: 0000001 姓 名: 神刀公子 实验任务:在实验4的根底上,完成以下描述赋值语句和算数表达式文法GA的语法制导生成中间代码四元式的过程。A-V:=E V- EE+T|E-T|T TT*F|T/F|F F(E)|说明:标识符的定义参见实验一程序的功能描述从文件中读入表达式,输出其四元式的结果序列 本程序只能生成赋值语句与算数表达式中间代码的四元式不能生成逻辑表达式与其他复杂语句中间代码的四元式,其功能还需要进一步完善。程序结构描述打开文件成功N调用scan()函数从文件读入表达式 Y完毕输出所读入的表达式调用生成四元式函数siyuanshi()表达式中是否有括号N处理括号内的 Y处理乘除加减和赋值运算sum=0N输出错误提示输出成功 Y完毕程序测试方案测试用例一:d=a+b*(3*n)/(b-a)测试用例二:x=x*(x+y-(x-y)/(z+x)-y)实验总结此程序根本达到了实验要求,能够生成简单的赋值与算数表达式中间代码的四元式,但其功能实在

      2、是过于简单。第一次调试通过后程序还存在以下不足:(1) 此程序只能从文件中读入一个表达式,读入多个如此会出错;(2) 所读入的表达式中假如含有多于一个括号,程序会出错;(3) 括号假如多于一个表达式如此会出错;(4) 在测试用例二中的分析过程明显是错误的,这足以看出程序的漏洞很多但经过进一步优化算法,以上问题根本解决,但程序中仍然存在很多不足,例如时间效率和空间效率方面做的还不够好,要改善这些不足还需要进一步完善程序,在以后的学习生活中我会根据所学知识的不断深入而不断完善此程序,争取使其功能更加强大。经过这次实验我更加深刻的理解了生成中间代码的算法思想,与时的将所学知识用于实践,更加深刻的掌握了所学知识。附录#include#include#includeusing namespace std;#define MAX 100int m=0,sum=0;/sum用于计算运算符的个数 /m用于标记输入表达式中字符的个数char JG=A;char strMAX;/用于存输入表达式int token=0;/左括号的标志/*用于更改计算后数组中的值*/void change(int e)int

      3、 f=e+2;char ch=strf;if(ch=A&ch=Z)for(int l=0;l=A&stre=Z)for(int i=0;im;i+)if(stri=stre)stri=JG;void chengchuchuli(int i,int m) i+;for( ;i=m-1;i+)/处理乘除运算 if(stri=*|stri=/) cout(stri stri-1 stri+1 JG)endl; change(i-1); stri-1=stri=stri+1=JG; sum-; JG=(char)(int)JG+; void jiajianchuli(int j,int m)j+;for( ;j=m-1;j+)/处理加减运算 if(strj=+|strj=-) cout(strj strj-1 strj+1 JG)endl; change(j-1); strj-1=strj=strj+1=JG; sum-; JG=(char)(int)JG+; /*扫描一遍从文件中读入表达式*/void scan(FILE *fin) int pMAX; char ch=a;int c=-1,

      4、q=0;while(ch!=EOF)ch=getc(fin);while(ch= |ch=n|ch=t) ch=getc(fin);/消除空格和换行符strm+=ch;if(ch=|ch=+|ch=-|ch=*|ch=/) sum+;else if(ch=() p+c=m-1; else if(ch=) q=m-1; chengchuchuli(pc,q);/从左括号处理到又括号 jiajianchuli(pc,q); JG=(char)(int)JG-; strpc=strm-1=JG; c-; JG=(char)(int)JG+;/*对表达是进展处理并输出局部四元式*/void siyuanshi()for(int i=0;i=m-1;i+)/处理乘除运算 if(stri=*|stri=/) cout(stri stri-1 stri+1 JG)endl; change(i-1); stri-1=stri=stri+1=JG; sum-; JG=(char)(int)JG+; for(int j=0;j=m-1;j+)/处理加减运算 if(strj=+|strj=-) cout(strj strj-1 strj+1 JG)endl; change(j-1); strj-1=strj=strj+1=JG; sum-; JG=(char)(int)JG+; for(int k=0;k=m-1;k+)/处理赋值运算 if(strk=) JG=(char)(int)-JG; cout(strk strk+1 strk-1)endl; sum-; change(k+1); strk-1=JG; /*主函数*/void main()char inMAX; /用于接收输入输出文件名 FILE *fin; /用于指向输入输出文件的指针 coutin;coutendl; if (fin=fopen(in,r)=NULL) /判断输入文件名是否正确 coutendl打开词法分析输入文件出错!endl; cout四元式如下:endl;scan(fin);/调用函数从文件中读入表达式 /*调用生成四元式的函数*/siyuanshi(); /*判断是否成功*/if(sum=0) cout成功!endl;else cout有错误!endl; /关闭文件fclose(fin); /

      《目标代码中间代码生成四元式设计文档》由会员博****1分享,可在线阅读,更多相关《目标代码中间代码生成四元式设计文档》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.