编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)

编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)

ID:11021513

大小:503.67 KB

页数:37页

时间:2018-07-09

编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)_第1页
编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)_第2页
编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)_第3页
编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)_第4页
编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)_第5页
资源描述:

《编译原理课程设计(if-else条件语句翻译_三地址_简单优先法)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、课程设计任务书题目:IF-ELSE条件语句的翻译程序设计(简单优先法、输出三地址表示)初始条件:理论:学完编译课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)写出符合给定的语法分析方法的文法及属性文法。(2)完成题目要求的中间代码三地址表示的描述。(3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。(4)编制好分析程序后,设计若干用例,

2、上机测试并通过所设计的分析程序。(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:1系统描述(问题域描述);2文法及属性文法的描述;3语法分析方法描述及语法分析表设计;4按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;5编译系统的概要设计;6详细的算法描述(流程图或伪代码);7软件的测试方法和测试结果;8研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);9参考文献(按公开发表的规范书写)。时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成

3、程序调试及测试。周5:撰写课程设计报告。设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。设计报告书收取时间:设计周的次周星期一上午10点。指导教师签名:2013年月日系主任(或责任教师)签名:2013年月日IF-ELSE条件语句的翻译程序设计(简单优先法、输出三地址表示)1系统描述1.1题目IF-ELSE条件语句的翻译程序设计(简单优先法、输出三地址表示)1.2.目的通过设计、编制、调试一个条件语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法

4、检查和分析。1.3.设计内容及步骤对条件语句:IF〈布尔表达式〉THEN〈赋值语句〉ELSE〈赋值语句〉(1)按给定的题目写出符合语法分析方法要求的文法和属性文法描述。(2)按给定的题目给出语法分析方法的思想及分析表设计。(3)按给定的题目给出中间代码序列的结构设计。(4)完成相应的词法分析、语法分析和语义分析程序设计。(5)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。2文法及属性文法的描述2.1文法文法是用于描述语言的语法结构的形式规则(即语法规则)。这些规则必须是准确的、易于

5、理解的以及有相当强的描述能力。由这种规则所产生的程序语言应有利于句子分析和翻译,而且,最好能通过这些规则自动产生有效的语法分析程序。IF-ELSE条件语句的文法G[S]如下所示:(1)S->CM(2)S->TM(3)M->beginLend(4)C->ifBthen(5)T->CMelse其中非终结符B为布尔表达式,其文法G[B]如下:(1)B->B1orB2(2)B->B1andB2(3)B->notB1(4)B->(B1)(5)B->id1ropid2(6)B->true(7)B->false而

6、在文法G[S]中非终结符L表示赋值语句块,其文法G[L]如下:(1)L->L1A;(2)L->A;(3)A->id=M(4)M->E(5)E->E1+E2(6)E->E1*E2(7)E->-E1(8)E->(E1)(9)E->id2.2属性文法属性文法是在上下文无关文法的基础上,为每个文法符号(终结符或者非终结符)配备若干相关的“值”(与文法符号相关的属性)。在一个属性文法中,对应于每个产生式A→a都有一套与之相关联的语义规则,每规则的形式为:b:=f(c1,c2,…,ck)其中f是一个函数,而且或

7、者①b是A的一个综合属性并且c1,c2,…,ck是产生式右边文法符号的属性或者②非终结符既可有综合属性也可有继属性,文法开始符号的所有继承属性作为属性计算前的初始值[1]。2.2.1语义变量和语义动作说明对于文法G[L],首先对id表示的单词定义一属性id.name,用做语义变量,用Lookup(id.name)语义函数审查id.name是否出现在符号表中,如在,则返回一指向该登陆项的指针,否则返回nil。语义过程emit表示输出四元是到输出文件上。语义过程newtmp表示生产一临时变量,每调用一次

8、,生成一新的临时变量。语义变量E.place,表示存放E值的变量名在符号表的登陆项或一整数码(若此变量时一个临时变量)[2],2.2.1给出了翻译赋值语句块到三地址的语义描述。2.2.1G[S]的属性文法为:(1)S->CM{S.chain:=merge(C.chain,M.chain)}(2)S->TM{S.chain:=merge(T.chain,M.chain)}(3)M->beginLend{M.chain:=L.chain}(4)C->ifBthen{bak

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。