欢迎来到天天文库
浏览记录
ID:41054216
大小:225.50 KB
页数:19页
时间:2019-08-15
《编译原理课程设计WHILE循环语句的翻译程序设计(递归下降法、输出四元式)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、武汉理工大学《编译原理》课程设计说明书学号:课程设计题目WHILE循环语句的翻译程序设计(递归下降法、输出四元式)学院计算机科学与技术专业计算机科学与技术班级计算机班姓名指导教师2012年1月6日18武汉理工大学《编译原理》课程设计说明书目录1.问题描述31.1问题描述31.2主要任务31.3测试数据32文法及属性文法的描述42.1文法的描述42.2while-do循环语句的文法42.3递归文法的优化42.4属性文法的描述53.语法分析方法描述63.1程序设计对文法的要求63.2语法分析的思想73.3递归下降文法实现原理73.4
2、中间代码形式84简要的分析与概要设计94.1全局程序的概要设计94.2词法分析94.3递归下降翻译器的设计94.4语法制导翻译105详细的算法描述105.1算法描述105.2运行结果146.研制报告(研制过程,本设计的评价、特点、不足、收获与体会等)156.1研制过程156.2本设计的评价、特点166.3感受和体会166.4对程序改进的想法1718武汉理工大学《编译原理》课程设计说明书课程设计任务书学生姓名:专业班级:计算机班指导教师:工作单位:计算机科学与技术学院题目:WHILE循环语句的翻译程序设计(递归下降法、输出四元式)
3、初始条件:理论:学完编译课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)写出符合给定的语法分析方法的文法及属性文法。(2)完成题目要求的中间代码四元式的描述。(3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。(4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:1系统描述(问题域描述
4、);2文法及属性文法的描述;3语法分析方法描述及语法分析表设计;4按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;5编译系统的概要设计;6详细的算法描述(流程图或伪代码);7软件的测试方法和测试结果;8研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);9参考文献(按公开发表的规范书写)。时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试及测试。周5:撰写课程设计报告。设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。设计报告书收取时间:设计周的次周星期一上午10点
5、。指导教师签名:2012年1月6日系主任(或责任教师)签名:2012年1月6日18武汉理工大学《编译原理》课程设计说明书课程设计报告书1.问题描述1.1问题描述设计一个WHILE〈布尔表达式〉DO〈赋值语句〉循环语句的词法﹑语法及语义分析程序,语法分析选择递归下降法,采用用语法制导翻译输出中间代码四元式。1.2主要任务通过设计、编制、调试一个WHILE循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。首先写出一个能识别while循环语句的文法,通过消除左递归使它符合LL(
6、1)即递归下降法的要求,然后按照这个文法编写一个集词法分析,语法分析和语义分析为一体的程序,该程序首先可以检查输入语句是否符合词法要求,若符合则继续识别输入的语句是否符合while语句的文法,若符合则进行语义分析,输出用四地址代码表示的中间代码。1.3测试数据编写好源代码后,进行调试,主要调试数据有:新建一个文本,输入一个while循环语句的内容,保存;打开该文件,进行词法、语法的分析,给出分析结果。2文法及属性文法的描述2.1文法的描述用扩充巴科斯-瑙尔范式(EBNF)给出的while循环语句的文法描述,如下:7、>::=while(<条件语句>)do{<赋值语句>}<条件语句>::=<表达式><条件运算符><表达式><条件运算符>::=>8、<9、=10、>=11、<=18武汉理工大学《编译原理》课程设计说明书<表达式>::=<表达式>+<表达式2>12、<表达式>-<表达式2>13、<表达式2><表达式2>::=<表达式2>*<表达式3>14、<表达式2>/<表达式3>15、<表达式3><表达式3>::=(<表达式>)16、<标识符>17、<数字><赋值语句>::=<标识符>=<表达式>;2.2while-do循环语句的文法产生式为S->whileEdoA,为便于语法制18、导翻译将其改写如下:文法G(s)如下:S-->WEDG(意思是whileEdoG)G-->c=RR-->dTe19、dT-->+20、-21、*22、/E-->aFbF-->>23、==24、<2.3递归文法的优化While循环语句的文法表示如下:1.S->while(A)do{B}2
7、>::=while(<条件语句>)do{<赋值语句>}<条件语句>::=<表达式><条件运算符><表达式><条件运算符>::=>
8、<
9、=
10、>=
11、<=18武汉理工大学《编译原理》课程设计说明书<表达式>::=<表达式>+<表达式2>
12、<表达式>-<表达式2>
13、<表达式2><表达式2>::=<表达式2>*<表达式3>
14、<表达式2>/<表达式3>
15、<表达式3><表达式3>::=(<表达式>)
16、<标识符>
17、<数字><赋值语句>::=<标识符>=<表达式>;2.2while-do循环语句的文法产生式为S->whileEdoA,为便于语法制
18、导翻译将其改写如下:文法G(s)如下:S-->WEDG(意思是whileEdoG)G-->c=RR-->dTe
19、dT-->+
20、-
21、*
22、/E-->aFbF-->>
23、==
24、<2.3递归文法的优化While循环语句的文法表示如下:1.S->while(A)do{B}2
此文档下载收益归作者所有