编译原理课程设计教程.docx

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课程设计教程

学 号:0121410870922课 程 设 计课程编译原理题 目For语句的翻译程序设计(简单优先法、输出三地址码)学 院计算机科学与技术学院专 业计算机科学与技术班 级计算机1404姓 名王承禹指导教师林泓2016年12月27日目录1 系统描述21.1设计目的21.2设计内容描述22 文法及属性文法的描述23 语法分析方法描述及语法分析表设计33.1语法分析方法描述33.2分析法操作步骤43.3优先关系矩阵54 中间代码形式的描述及中间代码序列的结构设计54.1中间代码形式55 编译系统的概要设计65.1数据结构65.2模块设计65.2.1词法分析模块75.2.2语法、语义分析模块75.2.3主控模块116 详细的算法描述116.1词法分析算法116.2语法分析算法126.3语义分析算法127 软件的测试方法和测试结果138 本设计的评价、特点、149 收获与体会1410 核心代码16成绩评定表27For语句的翻译程序设计(简单优先法、输出三地址码)1 系统描述1.1设计目的 通过学习编译原理的相关内容,设计并编写FOR循环语句的翻译程序,使用简单优先法,按三地址码输出,能够实现词法分析,语法和语义的分析,加深对所学知识的理解,并且能够熟练运用到实际当中。1.2设计内容描述FOR循环语句的基本格式如下:FOR i=E step E until E do Stmt根据所给题目要求,设计出符合FOR循环语句的文法及属性文法的描述,语法分析方法以及三地址码的输出方式,罗列出词法分析和语法分析的流程,根据语法规则设计输入输出方法,简单优先法中的优先关系表格。设计好并且进行编译,设计若干输入输出用例(包括正确的输入和错误的输入,用来检查程序的完整性)。 2 文法及属性文法的描述根据For语句的特点,制定的产生式规则及由产生式对应的语义动作如下:F1-for i = E1{emit(entry(i) , = , E1.place);F1.place = entry(i);/*保存控制变量在符号表中的位置*/F1.chain = nextstat;emit(goto--);/*goto OVER*/F1.codebegin = nextstat;/*保存AGAIN的地址*/}F2-F1 step E2{F2.codebegin = F1.codebegin;F2.place = F1.place;emit(F1.place = E2.place + F1.place);backatch(F1.chain,nextstat);}F3-F2 until E3{F3.codebegin = F2.codebegin;q = nextstat;emit(if F2.place, = E3.place, goto q+2);/*若i=E3 转去执行循环体的第一个三地址码*/F3.chain = nextstat;emit(goto--)/*转离循环*/}S-F3 do Stmt{emit (goto F3.codebegin)/*goto AGAIN*/backpatch(Stmt.chain,F3.codebegin);Stmt.chain = F3.chain/*转离循环的转移目标留待外层S时再回填*/}3 语法分析方法描述及语法分析表设计3.1语法分析方法描述本次课内实践要求使用简单优先关系方法。简单优先分析法的基本思想史对一个文法按照一定原则求出该文法所有符号即包括终结符和非终结符之间的优先关系确定归约过程中的句柄,它的归约实际上是一种规范归约。一个文法是简单优先文法必须满足以下条件(1)在文法符号集V中,任意两个符号之间最多只有一种优先关系成立;(2)在文法中任意两个产生式没有相同的右部。三种优先关系及其判定方法如下所示:(1)X=Y 表示X和Y的优先关系相等,当且仅当G中存在产生式规则A→…XY…;(2)XY表示X的优先性比Y的优先性小,当且仅当G中存在产生式规则 A→…XB…,且BY…;(3)XY表示X的优先性比Y的优先性大,当且仅当G中存在产生式规则 A→…BD…,且B…X和DY…;(4)对任何X,若文法开始符号S→X…,则#X,若S→…X则X#。3.2分析法操作步骤(1)由简单优先分析法的基本思想设计的如下算法,首先要构造优先关系矩阵(如3.3所示),并将文法产生式保存,设置符号数组S:(2)将输入符号串a1a2…an # 依次逐个保存符号数组S中,直到遇到数组中第一个符号ai的优先性下一个待输入符号aj为止。(3)数组当前符号ai为句柄尾,由此向左在数组中找句柄的头符号ak,即找到ak-1ak为止。由句柄ak…ai在文法的产生式中查找右部为ak…ai的产生式,若找到则用

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档