欢迎来到天天文库
浏览记录
ID:27394003
大小:943.51 KB
页数:99页
时间:2018-12-01
《《语法制导翻译》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、语法制导翻译??为什么进行词法和语法分析??用A→α进行归约表达的是什么意思看:operand+termE→E1+TE1的值+T的值的结果作为E的值——即:取来E1的值和T的值做加法运算,结果作为E的值E.val=E1.val+T.val第五章语法制导翻译翻译的任务首先是语义分析和正确性检查,若正确,则翻译成中间代码或目标代码。基本思想根据翻译的需要设置文法符号的属性,以描述语法结构的语义。例如,一个变量的属性有类型,层次,存储地址等。表达式的属性有类型,值等。属性值的计算和产生式相联系。随着语法分析的进行,执行属性值的计算,完成语
2、义分析和翻译的任务。5.1语法制导翻译概述语法制导翻译的概念描述在进行语法分析的同时,完成相应的语义处理E→E1+E2E.val:=E1.val+E2.val语法结构具有规定的语义问题:如何根据被识别出的语法成分进行语义处理?1.语义分析的任务语义检查例:类型、运算、维数、越界语义处理例:变量的存储分配例:表达式的求值例:语句的翻译(中间代码的生成)总目标:生成等价的中间代码2.代码结构计算学科:对信息(数据表示)描述和变换算法的系统研究变换:源、目标以及源与目标的对应关系语句的代码结构语句分类:说明语句——符号表的查填可执行语句—
3、—指令代码3.典型处理方法对应每一个产生式编制一个语义子程序,当一个产生式获得匹配时,调用相应的语义子程序实现语义检查与翻译E→E1+TE.val:=E1.val+T.valT→T1*FT.val:=T1.val*F.valF→idF.val:=id.val适宜在完成归约的时候进行3.典型处理方法在产生式的右部的适当位置,插入相应的语义动作,按照分析的进程,执行遇到的语义动作D→T{L.in:=T.type}LT→int{T.type:=integer}T→real{T.type:=real}L→{L1.in:=L.in}L1,id
4、{…}语义——可以看成是相应文法符号的属性适宜在进行推导时完成语义翻译的流程输入符号串分析树依赖图语义规则的计算实际上,编译中语义翻译的实现并不是按图中的流程处理的;而是随语法分析的进展,识别出一个语法结构,就对它的语义进行分析和翻译。◆语法制导定义是对上下文无关文法的推广每个文法符号都有一个相关的属性集。综合属性:通过分析树中其子节点的属性值计算出来;继承属性:由该节点的兄弟节点及父节点的属性值计算出来;◆依赖图语义规则建立了属性之间的依赖关系,这些关系可以用图来表示,这样的图称为依赖图。◆属性5.1语法制导定义(Syntax-d
5、irecteddefinitions)在一个语法制导定义中,A→P都有与之相关联的一套语义规则,规则形式为b:=f(c1,c2,…,ck),f是一个函数,而且或者1.b是A的一个综合属性并且c1,c2,…,ck是中的符号的属性,或者2.b是中的符号的一个继承属性并且c1,c2,…,ck是A或中的任何文法符号的属性。在两种情况下,都说属性b依赖于属性c1,c2,…,ck。5.1.1语法制导定义的形式例5.1台式计算器程序的语法制导定义(图5-2)产生式语义规则LEnprint(Eval)(可看作是L的虚属性)EE1+
6、TEval:=E1val+TvalETEval:=TvalTT1*FTval:=T1val*FvalTFTval:=FvalF(E)Fval:=EvalFdigitFval:=digitlexvalS-属性定义仅仅使用综合属性的语法制导定义。结点属性值的计算正好和自底向上分析建立分析树结点同步进行。例5.2输入:3*5+4n5.1.2综合属性digitlexval:=3Fval:=3Tval:=3digitlexval:=5Fval:=5Tval:=15*Eval:=15+digi
7、tlexval:=4Fval:=4Tval:=4Eval:=19Ln◆综合属性值的计算方法对于s-属性定义,通常使用自底向上的分析方法,在建立每一个结点处使用语义规则来计算综合属性值,即在用哪个产生式进行归约后,就执行那个产生式的s-属性定义计算属性的值,从叶结点到根结点进行计算。5.1.3继承属性继承属性值是由此结点的父结点和/或兄弟结点的某些属性值来决定的。例5.3变量说明的属性定义inta,b,c表5.2带有继承属性L.in的语法制导定义产生式语义规则DTLLin:=TtypeTintTtype:=integ
8、erTrealTtype:=realLL1,idL1in:=Linaddtype(identry,Lin)Lidaddtype(identry,Lin)TLLid3Lid2Did1real,,1entry2entr
此文档下载收益归作者所有