FOR循环语句的翻译程序设计LL法、输出四元式(含代码和实验报告册).doc

FOR循环语句的翻译程序设计LL法、输出四元式(含代码和实验报告册).doc

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
武汉理工大学《编译原理》课程设计 PAGE 52 学 号: 课 程 设 计 题 目 FOR循环语句的翻译程序设计 (LL(1)法、输出四元式) 学 院 计算机科学与技术 专 业 计算机科学与技术 班 级 姓 名 指导教师 陈天煌 2012 年 01 月 03 日 课程设计任务书 学生姓名: 专业班级: 指导教师: 陈天煌 工作单位: 计算机科学与技术学院 题目: FOR循环语句的翻译程序设计(LL(1)法、输出四元式) 初始条件: 理论:学完编译课程,掌握一种计算机高级语言的使用。 实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 写出符合给定的语法分析方法的文法及属性文法。 完成题目要求的中间代码四元式的描述。 写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 1 系统描述(问题域描述); 2 文法及属性文法的描述; 3 语法分析方法描述及语法分析表设计; 4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计; 5 编译系统的概要设计; 6 详细的算法描述(流程图或伪代码); 7 软件的测试方法和测试结果; 8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等); 9 参考文献(按公开发表的规范书写)。 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试及测试。 周5:撰写课程设计报告。 设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。 设计报告书收取时间:设计周的次周星期一上午10点。 指导教师签名: 2011 系主任(或责任教师)签名: 20 FOR循环语句的翻译程序设计 ——LL(1)法、输出四元式 1.系统描述 1.1问题描述 用LL(1)法设计、编制、调试一个FOR(表达式1;表达式2;表达式3)〈赋值语句〉的语法及语义分析程序,输出四元式。 1.2功能描述 (1)能够识别出单词、单词类型、单词位置 (2)能够用LL(1)方法识别单词序列是否符合FOR循环文法 (3)能够完成对FOR循环中3个表达式的翻译 (4)能够完成对FOR循环中赋值语句(含复杂表达式)的翻译 (5)能够对FOR循环3个表达式中有表达式1或3缺少时翻译 (6)能够用标准化的四元式进行翻译结果输出 (7)能够用四元式清晰、正确地反映FOR循环的执行流程 (8) 能够用文本输入FOR语句循环,再用txt文本输出分析结果 2 文法及属性文法的描述 2.1文法的语言描述 A-for(条件){赋值语句} 条件-语句1 语句2 语句3 语句1-i = 表达式; //i表示标识符 语句1-; 语句2-i 表达式; 语句2-i 表达式; 语句3-i = 表达式; 语句3-e 赋值语句-m = 表达式 //m表示标识符,作为左值出现 赋值语句-e 表达式-表达式+表达式 表达式-表达式-表达式 表达式-表达式*表达式 表达式-表达式/表达式 表达式-(表达式) 表达式-i //i 表示标识符、常数、字符、或字符串 2.2属性文法描述 2.2.1 FOR 语句 FOR(C D G) n C n+1 if D==true goto Y.start n+2 goto Y.end+3 Y.start //赋值语句的开始 Y.end //赋值语句结束 Y.end+1 G Y.end+2 goto n+1 Y.end+3 //跳出循环体后第一条语句 2.2.2 赋值语句 Y-m=E; { m.value=E.Value } E-E1 op E2 (op: +,-,*,/,或) { E.place = newtemp; //生成新的变量 E.value =E1.value op E2.value } N-(E) { N.value=E.value } N-i { N.value=

文档评论(0)

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

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

1亿VIP精品文档

相关文档