1、 1 / 16 课程设计任务书课程设计任务书 题目题目: FOR: FOR 循环语句的翻译程序设计(循环语句的翻译程序设计(LLLL(1 1)法、输出四元式)法、输出四元式) 初始条件:初始条件: 理论:学完编译课程,掌握一种计算机高级语言的使用。 实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上 进行设计。 要求完成的主要任务要求完成的主要任务: : (包括课程设计工作量及其技术要求,以及说明书撰写等具 体要求) (1) 写出符合给定的语法分析方法的文法及属性文法。 (2) 完成题目要求的中间代码四元式的描述。 (3) 写出给定的语法分析方法的思想,完成语法分析和语义分析程
2、序设计。 (4) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。 (5) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 1 系统描述(问题域描述) ; 2 文法及属性文法的描述; 3 语法分析方法描述及语法分析表设计; 4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计; 5 编译系统的概要设计; 6 详细的算法描述(流程图或伪代码) ; 7 软件的测试方法和测试结果; 8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等) ; 9 参考文献(按公开发表的规范书写) 。 时间安排:时间安排: 设计安排一周:周 1、周 2:完成系统分析及设
3、计。 周 3、周 4:完成程序调试及测试。 周 5:撰写课程设计报告。 设计验收安排:设计周的星期五第 1 节课开始到实验室进行上机验收。 设计报告书收取时间:设计周的次周星期一上午 10 点。 指导教师签名:指导教师签名: 20201010 年年 1 11 1 月月 2323 日日 系主任(或责任教师)签名:系主任(或责任教师)签名: 20201010 年年 1 11 1 月月 2323 日日 FORFOR 循环语句的翻译程序设计循环语句的翻译程序设计 2 / 16 - LLLL(1 1)法、输出四元式)法、输出四元式 1.1.系统描述系统描述 1.11.1 程序设计要求程序设计要求 通过设
4、计、 编制、 调试一个 FOR( )循环语句的词法、 语法及语义分析程序, 实现对于 FOR( )循环语句的翻译,加深对 LL(1)文法的认识,掌握这种自顶向下 的文法分析方法。 首先,设计出一个关于 FOR( )循环语句的文法,通过消除左递归使它符合 LL(1)即递归下降法的要求;然后按照这个文法构造出文法的预测分析表、及文 法橘子的分析过程,通过仔细的研究之后设计出一个集词法分析、语法分析和语 义分析为一体的程序,从文法开始法号根据相应的产生式推到出相应的句子,最 终输出四元式形式的中间代码。 1.21.2 设计思想设计思想 运用 C+语言作为实现方式,实现 FOR()循环语句的翻译,根据
5、 LL(1)文法 的基本思想,设计出相应的词法分析程序、语法分析程序和语义分析程序,并最 终输出到文件中。在程序中包含两个主要部分: 1. 词法分析:从文件里逐个读出字符,根据字符的种类将它们差分拆分成 一个个具有不同属性的独立的单词,包含:关键字、标识符、界限符、 运算符和常量等。 2. 语法语义分析:根据文法的产生式,运用 LL(1)文法的基本思想(即自 顶向下分析思想) ,构造出相应的预测分析表,通过分析表逐步推导, 最终推导出制定的句子。 2.文法及属性文法的描述 3 / 16 2.1 FOR 循环语句的文法 S S- - forfor(A;B;C)H;(A;B;C)H; A A- -
6、 i i = = n n B B- - i i i i + + + + D D- -i ni n E E- -i i - - - - H H- - i i = = i rop i rop n n (注释:i 代表标识符,n 代表常量) 2.22.2 FOR 循环语句的属性文法 产生式 属性文法 S S- - forfor(A;B;C)H;(A;B;C)H; emit(1);/emit(1);/生成最后一个生成最后一个 jumpjump backpatch(nextstat,LastGotoAddress);/backpatch(nextstat,LastGotoAddress);/回填最后回填最后 一个一个 jump;jump; backpatch(W.FalseOrEnd ,nextstat);/Bbackpatch(W.FalseOrEnd ,nextstat);/B 为假则跳为假则跳 到最后四元式到最后四元式 A A-