课程设计报告15060.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理 课程设计报告 题目名称: 算术表达式编译器的设计与实现 小组成员:学号201224020110姓名 曹子恺 成绩 学号201224020112姓名 雷 彬 成绩 指导教师: 宁航 编写时间: 年122014月11日 ▪1.课程设计题目名称 算术表达式编译器的设计与实现 ▪2.课程设计目的语任务 1、设计目的: 通过设计、编制、调试一个算术表达式编译器,进一步加深对编译器的词法 分析、语法分析、错误处理及输出等环节的理解,获得对实际编译器的构造原理、 过程和方法的感性认识,系统掌握语法制导翻译技术。 2、设计内容: 采用语法制导翻译模式设计一个算术表达式编译器,该编译器应能支持无符 号整数的+、-、×、等基本运算。 ▪3.设计思想和任务分配 1.开发工具:VC++ 6.0 2.所用算法:递归下降的预测分析法 3.词法分析部分 (1)算法描述: 词法分析阶段的基本任务是从以字符串表示的源程序中识别出具有独立意义的 单词符号。通过DOS 环境手动输入字符串序列作为带分析的源程序,调用词法 扫描子程序将字符串以二元组的形式输出,以形成“(单词种别,单词自身的值)” 形式的二元组。 (2 )具体思路如下: 在函数中让用户输入要识别的符号串,定义每单个字符为 ZF ,然后将输入的符 号串读入到 exp[20] 中,遇#结束。再依次扫描 exp[20] 中的每一个符号。在每次 读入过程中,当时数字时输出二元组num,ZF ,当扫描到算术符时输出op,ZF, 否则报错。只是运用了简单的循环和条件语句。 4 语法分析部分 语法分析部分采用递归下降方法,需要先将原算术表达式方法改写为LL(1)文 法为: E--TE E--+TE|ε T--FT T--*FT|ε F--(E)|i 然后再为每个非终结符设计一个对应的函数,通过各函数之间的递归调用从而实 现递归下降语法分析的功能。具体方法为: (1)当遇到终结符a时,则编写语句 If(当前读到的输入符号==a)读入下一个输入符号 (2)当遇到非终结符A时,则编写语句调用A()。 (3)当遇到A--ε 规则时,则编写语句 If(当前读到的输入符号不属于Follow(A))error() (4)当某个非终结符的规则有多个候选式时,按 LL(1)文法的条件能唯一地选 择一个候选式进行推导. ▪4.程序说明 1.函数说明和数据结构: (1)定义了结构体:利用TOKEN 定义结构单词(word),语义栈(sem);QT 为四 元式结构,使用了word 中两个变量。 (2 )定义了函数: void next(); // 读下一个单词 void newt(); // 申请一个临时变量函数 void quat(char); // 生成四元式函数 int E(); int F(); int T(); //递归下降分析的三个函数 2.主要变量说明: 用exp[20]存放构成单词符号的字符串,并且用于判断是否为关键字。W 为读入 的字符单个变量。cnt[num]按顺序存放读到的字符,为下面语义分析做准备。 词法分析流程图 : ▪5.程序运行结果 ▪6.测试报告 出错情况: ▪7.存在问题分析 (1)没有实现对多位数的运算,我们简化了程序功能只识别一位的整数。 (2)错误处理不完善,当出现的错误不在表达式结束时,错误后面的字符就分 析不出来了。还有就是错误的位置及信息没有输出。 (3)未完成内容:中间代码的生成及结果输出功能模块没有实现。 ▪8.总结与体会 曹子恺: 此次编译原理的课程设计不是很圆满的结束了,时间很短,中间有考试,加 上小组只有我们俩人,开始的准备工作做得并不清晰,只是抱着学习的心态一起 去进行课程设计,在分工方面并不明确,最后我着重进行了词法分析部分的设计 与实

文档评论(0)

公文编写,试卷编写 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档