if ,else 语句,递归下降法,输出四元式.doc
文本预览下载声明
学 号: 0121
课 程 设 计
课程名称 编译原理课程设计 题 目 IF-ELSE条件语句的翻译程序设计(递归下降法、输出四元式) 学 院 计算机科学与技术 专 业 计算机科学与技术 班 级 计算机1001班 姓 名 指导教师 陈天煌
2013 年 1 月 7 日
课程设计任务书
学生姓名 专业班级: 计算机1001班
指导教师: 陈天煌 工作单位:计算机科学与技术学院
题目: IF-ELSE条件语句的翻译程序设计(递归下降法、输出四元式表示)
初始条件:
理论:学完编译课程,掌握一种计算机高级语言的使用。
实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
写出符合给定的语法分析方法的文法及属性文法。
完成题目要求的中间代码四元式的描述。
写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。
编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。
设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:
1 系统描述(问题域描述);
2 文法及属性文法的描述;
3 语法分析方法描述及语法分析表设计;
4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;
5 编译系统的概要设计;
6 详细的算法描述(流程图或伪代码);
7 软件的测试方法和测试结果;
8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);
9 参考文献(按公开发表的规范书写)。
时间安排:
设计安排一周:周1、周2:完成系统分析及设计。
周3、周4:完成程序调试及测试。
周5:撰写课程设计报告。
设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。
设计报告书收取时间:设计周的次周星期一上午10点。
指导教师签名: 年 月 日
IF-ELSE条件语句的翻译程序设计
(递归下降法、输出四元式)
1.系统描述(问题域描述)
本次实验使用windows XP的visual C++软件,利用递归下降法实现IF-ELSE的条件语句的翻译程序设计,输出四元式表示,程序只能处理简单的布尔表达式和最简单的赋值语句,布尔表达式能够实现大于和小于的识别,也能处理关系运算符=和=的布尔表达式。
2.文法及属性文法的描述;
2.1文法的描述:
if-X then Y else Y;
X-idid;
X-idid;
X-id=id;
X-id=id;
Y-id=id;
2.3属性文法的描述:
属性文法(也称属性翻译文法)是Knuth在1968年首先提出的。
它是在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的“特性”(称为属性)。
3 语法分析方法描述及语法分析表设计;
3.1语法分析方法描述:
在程序语言的语法定义中有许多采用递归定义。我们在对它进行语法分析时,编制的处理程序也采取递归的方式,可使其结构简单易读。但由于频繁地调用子程序大大地降低了分析速度。
递归下降法的主要思想是:对每个非终结符按其产生式结构写出相应语法分析子程序。因为文法递归相应子程序也递归,子程序的结构与产生式结构几乎一致。所以称此种方法称为递归子程序法或递归下降法。
程序是以一个个单词的形式向后读取,读取到if之后就开始执行E的递归子程序,程序根据布尔表达式的真假,进而选择执行相应的分支,即如果布尔表达式为真,就执行then后面的赋值语句,如果布尔表达式为假,就执行else后面的赋值语句,递归子程序E分别赋予布尔表达式真和假不同的地址,并将跳转相应的信息写到处理四元式的结构体数组中去,E执行完以后,回到S中继续执行后面的,读取到then之后,就表示当条件为真的时候,执行then之后的赋值表达式,处理赋值的信息写到处理四元式的结构体数组中去,当读取到else之后,同理的执行当条件为假的时候的赋值表达式,处理完了之后赋值相应的信息也写到处理四元式的结构体数组中去,这样反复执行就实现的对语法的分析。
3.2语法分析表设计:
实验要求的是递归下降法,主要是调用不同的递归子程序,所以没有什么语法分析表,流程图在后面。
4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;
4.1if-else四元式表示的描述:
中间代码,也称中间语言,是复杂性介于源程序
显示全部