WHILE循环语句的翻译程序设计(递归下降法,输出四元式)

WHILE循环语句的翻译程序设计(递归下降法,输出四元式)

ID:47433797

大小:122.15 KB

页数:18页

时间:2020-01-11

WHILE循环语句的翻译程序设计(递归下降法,输出四元式)_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《WHILE循环语句的翻译程序设计(递归下降法,输出四元式)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、武汉理工大学《数据结构》课内实践报告学号:0121210340314课内实践报告课程名称编译原理设计题目WHILE循环语句的翻译程序设计(递归下降法,输出四元式)学院计算机科学与技术专业班级计算机1203班姓名闵丹枫指导教师林泓2014年12月8日武汉理工大学《数据结构》课内实践报告武汉理工大学《数据结构》课内实践报告课程设计任务书学生姓名:闵丹枫专业班级:计算机1203班指导教师:林泓工作单位:计算机科学与技术学院题目:WHILE循环语句的翻译程序设计(递归下降法、输出四元式)初始条件:理论:学完编译课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计

2、算机可以在其上进行设计。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)写出符合给定的语法分析方法的文法及属性文法。(2)完成题目要求的中间代码四元式的描述。(3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。(4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:1系统描述(问题域描述);2文法及属性文法的描述;3语法分析方法描述及语法分析表设计;4按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;5编译系统的概要设计;6详细的算法描述(流程图或

3、伪代码);7软件的测试方法和测试结果;8研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);9参考文献(按公开发表的规范书写)。时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试及测试。周5:撰写课程设计报告。设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。设计报告书收取时间:设计周的次周星期一上午10点。指导教师签名:2014年9月1日系主任(或责任教师)签名:2014年月日16武汉理工大学《数据结构》课内实践报告WHILE循环语句的翻译程序设计(递归下降法、输出四元式)一.系统描述1.1问题描述设计一个WHILE〈布尔表达式〉DO〈

4、赋值语句〉循环语句的词法﹑语法及语义分析程序,语法分析选择递归下降法,采用用语法制导翻译输出中间代码四元式。1.2主要任务设计一个能识别while循环语句的文法,消除左递归,使文法符合LL(1)文法。利用递归下降法编写一个集词法分析,语法分析和语义分析为一体的程序。该程序首先可以检查输入语句是否符合词法要求,若符合则继续识别输入的语句是否符合while语句的文法,若符合则进行语义分析,输出用四地址代码表示的中间代码。二.文法及属性文法的描述2.1文法的描述扩充巴科斯-瑙尔范式(EBNF):::=while(<条件语句>)do{<赋值语句>}<条件语句>::=<表达式><条

5、件运算符><表达式><表达式>::=<表达式>+<表达式2>

6、<表达式>-<表达式2>

7、<表达式2><表达式2>::=<表达式2>*<表达式3>

8、<表达式2>/<表达式3>

9、<表达式3><表达式3>::=(<表达式>)

10、<标识符>

11、<数字><赋值语句>::=<标识符>=<表达式>;根据以上写出来的While循环语句的文法表示如下:1.S->while(A)do{B}2.A->CDC3.D->>

12、=

13、<

14、>=

15、<=4.C->C+E

16、C-E

17、E5.E->E*F

18、E/F

19、E6.F->(C)

20、i

21、n16武汉理工大学《数据结构》课内实践报告对以上文法消除左递归,最后得到的文法为:1.S->while

22、(A)do{B}2.A->CDC3.D->>

23、=

24、<

25、>=

26、<=4.C->EG5.G->+EG

27、-EG

28、ε6.E->FH7.H->*FH

29、/FH

30、ε8.F->(C)

31、i

32、n9.B->i=C;2.1属性文法的描述(1)任一非终结符B都不是左递归的,否则会产生死循环。(2)对A的任意两个右部βi,βj,有:first(βi)∩first(βj)=φ,First(βi)表βi所能导出串的第一个符号的集合。显然,每个βi的first(βi)是互不相同的,否则则无法判断应执行哪个ζ(βi)。产生式语义规则S-->while(A)do{B}{S.first:=newtemp;S.second:=new

33、temp;A.true:=newtemp;emit(A.false:=S.second;S1.second:=S.first;S.place:=(S.begin,‘:’)

34、

35、B.place

36、

37、printf(S.true,‘:’)

38、

39、S1.place

40、

41、printf(‘goto’,S.begin)

42、

43、printf(B.false,‘:’)

44、

45、printf(‘gotoLnext’);)}A-->CDC{A.place:=ne

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

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

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