资源描述:
《编译原理课程设计---语法制导.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、郑州轻工业学院课程设计说明书题目:语法制导生成方法姓名:孙雪平院(系):计算机与通信工程学院专业班级:计算机科学与技术学号:5指导教师:马吉明成绩:时间:2013年6月17日至2013年6月21日8郑州轻工业学院课程设计任务书题目语法制导生成方法专业、班级计科10-01学号5姓名孙雪平主要内容、基本要求、主要参考资料等:内容:以语句的四元式中间代码及其语法制导生成为例分析语法制导生成方法。给出FOR或WHILE语句的四元式结构及其语法制导生成过程基本要求:从文件中读入表达式,输出其四元式的结果序列本程序只能生成赋
2、值语句及算数表达式中间代码的四元式不能生成逻辑表达式及其他复杂语句中间代码的四元式,其功能还需要进一步完善主要参考资料:编译原理第三版刘铭徐兰芳骆婷编完成期限:2013年6月21日指导教师签名:课程负责人签名:年月日8目录1.实验原理31.1.实验原理31.2.实验目的41.3.实验要求51.4.程序功能描述61.5.实验心得881.实验原理1.1.实验原理(1)自顶向下法(推导法)从开始符号出发,采用推导运算,试图自顶向下构造语法树。自底向上法(归约法)从给定的符号串出发,采用归约运算,试图自底向上构造语法树。
3、(2)递归下降子程序法:递归子程序法属于自顶向下语法分析方法。故又名递归下降法。要求文法是LL(1)文法。LL(1)分析法:LL(1)分析法是指从左到右扫描(第一个L)、最左推导(第二个L)和只查看一个当前符号(括号中的1)之意;LL(1)分析法又称预测分析法,属于自顶向下确定性语法分析方法。要求文法是LL(1)文法。(3)相同点:都要求文法是LL(1)文法;都是自顶向下的分析方法;都通过分析下个字符来判断该进入哪个状态或者调用哪个函数。
不同点:LL(1)分析法先建立起预测分析表,通过对分析栈的不断操作(出栈,
4、入栈)来进行;递归下降子程序法是通过函数间的函数调用来实现不同状态间的转换,并简化了代码。(4)语法制导翻译是在语法分析过程中,随着分析(推导或归约)的逐步进展,每识别出一个语法结构,根据文法的每个规则所对应的语义子程序进行翻译的方法;核心技术是构造属性翻译文法。(5)假定:SEM(m)--语义栈(属性传递、赋值场所);
QT[q]–四元式区;
G``(E):E->T
5、E+T{GEQ(+)}
6、E-T{GEQ(-)}T->F
7、T*F{GEQ(*)}
8、T/F{GEQ(/)}
F->i{PUSH(i)}
9、(E)
其中:
10、
⑴PUSH(i)–压栈函数(把当前i压入语义栈);
⑵GEQ(w)–表达式四元式生成函数:
生成一个四元式送QT[q]过程:
①t:=NEWT;{申请临时变量函数;}
②SEND(w,SEM[m-1],SEM[m],t)
③POP;POP;PUSH(t)1.2.实验目的(1)设计语法制导翻译生成表达式的四元式的算法;(2)编写代码并上机调试运行通过。输入——算术表达式;输出——语法分析结果;相应的四元式序列。(3)设计LL(1)分析法或LR(0)分析法的属性翻译文法,并根据这些属性翻译文8法,使用扩展的语法分析
11、器实现语法制导翻译。一个小例子:●算术表达式文法:G(E):EàEω0T
12、TTàTω1F
13、FFài
14、(E)●文法变换:G’(E)EàT{ω0T}TàF{ω1F}Fài
15、(E)●属性翻译文法:EàT{ω0“push(SYN,w)”T“QUAT”}TàF{ω1“push(SYN,w)”F“QUAT”}Fài“push(SEM,entry(w))”
16、(E)其中:push(SYN,w)—当前单词w入算符栈SYN;push(SEM,entry(w))—当前w在符号表中的入口值压入语义栈SEM;QUAT—生成四元式函数i.T
17、=newtemp;ii.QT[j]=(SYN[k],SEM[s-1],SEM[s],T);j++;iii.pop(SYN,_);pop(SEM,_);pop(SEM,_);push(SEM,T);●递归下降子程序:数据结构:SYN—算符栈;SEM—语义栈;1.1.实验要求1、采用递归下降语法制导翻译法,对算术表达式,赋值语句进行语义分析生成四元式序列.2、输入是语法分析后提供的正确的单词串,输出四元式序列输入:8输出:1.1.程序功能描述从文件中读入表达式,输出其四元式的结果序列本程序只能生成赋值语句及算数表达式
18、中间代码的四元式不能生成逻辑表达式及其他复杂语句中间代码的四元式,其功能还需要进一步完善。881.1.实验心得本次实验要实现中间代码生成,也是本学期的最后一次实验,要在前几次实验的基础上完成,综合比较前几次实验,感觉本次实验难度挺高,首先,前几次实验的词法分析和语法分析需要有足够高的正确率,否者本次实验中会遇到一些神奇的问题,不知道错在哪里;其次,对语法制导定义和语法制导