WHILE循环语句的翻译程序设计.docx

WHILE循环语句的翻译程序设计.docx

ID:57906248

大小:424.28 KB

页数:26页

时间:2020-04-03

WHILE循环语句的翻译程序设计.docx_第1页
WHILE循环语句的翻译程序设计.docx_第2页
WHILE循环语句的翻译程序设计.docx_第3页
WHILE循环语句的翻译程序设计.docx_第4页
WHILE循环语句的翻译程序设计.docx_第5页
资源描述:

《WHILE循环语句的翻译程序设计.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、学号:课程设计题目WHILE循环语句的翻译程序设计学院计算机科学与技术学院专业计算机科学与技术专业班级计科1002班姓名指导教师2013年1月9日课程设计任务书学生姓名:专业班级:计算机班指导教师:蔡菁工作单位:计算机科学与技术学院题目:WHILE循环语句的翻译程序设计(LL(1)法、输出四式)初始条件:理论:学完编译原理课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以其上进行设计。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)写出符合给定的语法分析方法的文法及属性文法。(2)完成题目要求

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

3、周1、周2:完成系统分析及设计。周3、周4:完成程序调试及测试。周5:撰写课程设计报告。设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。设计报告书收取时间:设计周的次周星期一上午10点。指导教师签名:2013年1月9日系主任(或责任教师)签名:2013年1月9日WHILE循环语句的翻译程序设计(LL(1)法、输出四元式)1.系统描述(1)按照课程设计的要求,写一个能识别while循环语句的文法,通过一定的变换使它符合预测分析法的要求,然后按照这个文法编写一个程序,该程序能识别输入的语句是否符合while语句的文法,或者能不能通过文法的开始符号推导出该语句。(2)

4、该程序应该包括词法分析器,能对输入的语句进行词法分析,然后再对输出结果。词法分析器应能识别关键字,标示符,常量,操作符等。(3)该程序的语法分析器能对输入的语法进行分析,判断输入语句能否满足while循环语句的文法。通过预测分析方法对语句进行分析,看能否由文法开始符号推导出输入语句。(4)该程序的语义分析器就是对分析结果进行输出,要求输出结果是四元式。2文法及属性文法的描述:2.1文法描述:2.1.1基本概念:文法是对语言结构的定义与描述。即从形式上用于描述和规定语言构的称为“文法”。2.1.2此设计针对的文法为:消除左递归后的产生式:S->while(A){B}A->CDC

5、D->==

6、>

7、<

8、>=

9、<=C->EGG->+EG

10、-EG

11、eE->FHH->*FH

12、/FH

13、eF->(C)

14、iB->i=C其中e代表为空2.2属性文法的描述:2.2.1属性文法的定义形式:每个文法符号有一组属性,每个文法产生式A->α有一组产生式b:=f(c1,c2,……,ck)的语义规则,其中f式函数,b和c1,c2,……,ck式该产生式文法符号的属性。2.2.2此设计题目的属性文法为:产生式属性文法S->id:=Ep:=lookup(id.name);Ifp!=nilthenemit(p“:=”E.place)elseerrorE->E1+E2E.place:=new

15、temp;emit(E.place“:=”E1.place“+”E2.place)E->E1-E2E.place:=newtemp;emit(E.place“:=”E1.place“-”E2.place)E->E1*E2E.place:=newtemp;emit(E.place“:=”E1.place“*”E2.place)E->E1/E2E.place:=newtemp;emit(E.place“:=”E1.place“/”E2.place)E->(E1)E.place:=E1.place;E->idp:=lookup(id.name);Ifp!=nilthenE.plac

16、e:=pelseerrorE->E1orE2E.place:=newtemp;emit(E.place“:=”E1.place“or”E2.place)E->E1andE2E.place:=newtemp;emit(E.place“:=”E1.place“and”E2.place)E->id1ropid2E.place:=newtemp;emit(“if”id1.place“rop”id2.place“goto”nextstat+3);emit(E.place:=“0”);emit(“goto”next

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

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

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