欢迎来到天天文库
浏览记录
ID:51496299
大小:690.50 KB
页数:71页
时间:2020-03-25
《哈工大编译原理5-1.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章语法制导翻译程序设计语言中更重要的一个方面,是附着在语言结构上的语义语法表述的是语言的形式,或者说是语言的样子和结构语义揭示了程序本身的涵义、施加于语言结构上的限制或者要执行的动作“老鼠吃猫”问题语法正确的句子,它的语义可能存在问题2语义分析的任务:①检查语言结构的语义是否正确②执行所规定的语义动作如表达式的求值、符号表的填写、中间代码的生成3中间代码生成与语言的语义密切相关,而语义的形式化描述是十分困难的。语法制导翻译:这种模式实际上是对上下文无关文法的一种扩充。4语法制导翻译的基本思想:对于文法:EE1+TETTFFididlexval
2、为id的属性;F.val、T.val、E.val为文法符号F、T、E对应的属性值将语言结构的语义以属性(attribute)的形式赋予代表此结构的文法符号,5当id为常数时,idlexval为id在常数表中的入口当id为标识符时,idlexval为id在符号表中的入口;F.val、T.val、E.val可以看作是中间变量6EE1+TEval:=E1val+TvalFidFval:=idlexvalTFTval:=FvalETEval:=Tval而属性的计算以语义规则(semanticrules)的形式赋予由文法符号组成的产生式
3、;在语法分析推导或归约的每一步骤中,通过语义规则实现对属性的计算,以达到对语义的处理7换句话说是:为每一个产生式配上语义规则并且在适当的时候执行这些规则。即当归约(或推导)到某个产生式时,除了按照产生式进行相应的代换之外(语法分析),还要按照产生式所对应的语义规则执行相应的语义动作,如计算表达式、查填符号表、产生中间代码(语义分析)8语法制导翻译是目前最常用的语义分析技术语法分析—建立语法分析树语义分析---遍历语法分析树语法制导翻译---建立与遍历同时完成9例1台式计算器程序的语法制导定义产生式语义规则LEnprint(Eval)EE1+TEva
4、l:=E1val+TvalETEval:=TvalTT1*FTval:=T1val*FvalTFTval:=FvalF(E)Fval:=EvalFidFval:=idlexval3*5+4的分析过程12103*F5TFE+TF4ET3*5+4的语法分析过程11idlexval:=3Fval:=3Tval:=3idlexval:=5Fval:=5Tval:=15*Eval:=15+idlexval:=4Fval:=4Tval:=4Eval:=19Ln3*5+4的语义分析过程125.1语法制导定义(Sy
5、ntax-directeddefinitions)语法制导定义也叫属性文法,9在文法产生式右部适当的位置上插入语义规则而得到的新文法称为属性文法。13通过每一个产生式和一个语义规则集合相关联。它是在上下文无关文法的基础上,通过每个文法符号和一个属性集合相关联,语义规则用来计算与产生式中出现的符号相关联的属性的值。914◆属性属性可以代表任何对象:字符串、数字、类型、内存单元或其它对象综合属性继承属性155.1.1属性1.b是A属性,在一个语法制导定义中,规则可表示为:b=f(c1,c2,…,ck)其中:f是一个函数,且满足下面两种情况之一:c1,c2,…,
6、ck是中的文法符号的属性,或者A的其它属性,则称b是A的综合属性;A→P都有与之相关联的一套语义规则,16在两种情况下,都说属性b依赖于属性c1,c2,…,ck。2.c1,c2,…,ck是A或中的任何文法符号的属性,则称b是中的符号的一个继承属性。175.1.2综合属性综合属性从下到上包括自身,其属性可从后代和自身的其它属性计算得到S-属性定义:只使用综合属性的语法制导定义。利用S-属性定义进行语义分析时,结点属性值的计算正好和自底向上分析建立分析树结点同步进行。18例1台式计算器程序的S-属性定义产生式语义规则LEnprint(Eval)
7、EE1+TEval:=E1val+TvalETEval:=TvalTT1*FTval:=T1val*FvalTFTval:=FvalF(E)Fval:=EvalFidFval:=idlexval3*5+4的分析过程193*F5TFE+TF4ET3*5+4的语法分析过程idlexval:=3Fval:=3Tval:=3idlexval:=5Fval:=5Tval:=15Eval:=15idlexval:=4Fval:=4Tval:=4Eval:=19L1920idlexval:=3Fval
8、:=3Tval:=3idlexval:=5Fval:=5T
此文档下载收益归作者所有