part属性文法和语法制导翻译

part属性文法和语法制导翻译

ID:39975095

大小:501.00 KB

页数:55页

时间:2019-07-16

part属性文法和语法制导翻译_第1页
part属性文法和语法制导翻译_第2页
part属性文法和语法制导翻译_第3页
part属性文法和语法制导翻译_第4页
part属性文法和语法制导翻译_第5页
资源描述:

《part属性文法和语法制导翻译》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、属性文法和语法制导翻译授课:胡静属性文法属性文法虽然形式语义学的研究已经取得了许多重大进展,但目前在实际应用中比较流行的语义描述和语义处理的方法主要还是属性文法和语法制导翻译。本章研究内容:上下文无关文法所产生的语言的翻译。把属性附加到代表语法结构的文法符号上,可以将语义信息和程序设计语言的结构联系起来。属性的值是用与文法产生式相关联的“语义规则”来计算的。涉及的概念语法制导定义:关于语言翻译的高层次规格说明,隐蔽了具体实现细节,不显式的说明翻译发生的顺序(属性文法)翻译模式:指明了语义规则的计算顺序,说明实现细节。语法制导翻译在编译器中的位置

2、语义规则的计算完成的工作生成代码在符号表中保存信息发出错误信息对输入符号串翻译的过程就是对语义规则求值的过程L-属性:包含了所有不必显式构造分析树即可完成的翻译输入符号串分析树依赖图语义规格的计算顺序属性文法是在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的“值”。属性代表与文法符号相关的信息,如类型、值、代码序列、符号表内容属性可以代表任何对象:字符串,数组,类型,内存单元或其他对象语法制导定义=文法+符号的相关属性集属性分为两个子集:综合属性、继承属性如果把文法符号的结点看成记录,包含若干存储信息的域,那么属性就相

3、当于域的名字属性文法分析树节点上属性值由产生式的语义规则来定义综合属性值:通过分析树中其子节点的属性值计算出来的继承属性值:由该节点的兄弟节点及父节点的属性值计算出来的依赖图语义规则建立了属性间的依赖关系,这种关系用图来表示就是依赖图依赖图表示了语义规则的计算顺序注释分析数每个节点都有属性值的分析树叫做注释分析树计算节点属性的过程称为注释或者装饰分析树属性文法在语法制导定义中,每个产生式A→α都有一个形如b=f(c1,c2,...,ck)的语义规则集合与之相关联,其中f是函数,并且满足下面条件之一b是A的一个综合属性,且c1,c2,...,ck

4、是该产生式文法符号的属性b是产生式右部某个文法符号的一个继承属性,且c1,c2,...,ck也是该产生式文法符号的属性在这两种情况下,我们说属性b依赖于c1,c2,...,ck。特别要强调的是:终结符只有综合属性,它们由词法分析器提供;非终结符既可有综合属性也可有继承属性,文法开始符号的所有继承属性作为属性计算前的初始值。关于属性文法的说明通常,这种函数的被写为表达式。其他的语义规则被写为过程调用或者程序段——定义产生式左部非终结符的虚综合属性值一般说来,对于出现在产生式右边的继承属性和出现在产生式左边的综合属性都必须提供一个计算规则。属性计算

5、规则中只能使用相应产生式中的文法符号的属性,这有助于在产生式范围内“封装”属性的依赖性。出现在产生式左边的继承属性和出现在产生式右部的综合属性不由所给产生式的属性计算规则进行计算,它们由其他产生式的属性规则计算或由属性计算器的参数提供。继承属性和综合属性的计算举例对于产生式A→BC来讲直观上来讲,这个产生式可以计算A的综合属性、B和C的继承属性。那么对于A的继承属性,可能需要根据某个类似于X→…A…的产生式求的。同样的B和C的综合属性可能需要根据某个类似于B→β,以及C→γ的产生式求的。属性文法举例产生式语义规则L→Enprint(E.val)

6、E→E1+TE.val:=E1.val+T.valE→TE.val:=T.valT→T1*FT.val:=T1.val*F.valT→FT.val:=F.valF→(E)F.val:=E.valF→digitF.val:=digit.lexval综合属性S属性定义在语法树中,一个结点的综合属性的值由其子结点的属性值决定。仅使用综合属性的属性文法称为S-属性定义S属性定义的分析树的分析方法——自底向上的在每个节点用语义规则来计算综合属性值。综合属性举例LnE产生式语义规则L→Enprint(E.val)E→E1+TE.val:=E1.val+T.

7、valE→TE.val:=T.valT→T1*FT.val:=T1.val*F.valT→FT.val:=F.valF→(E)F.val:=E.valF→digitF.val:=digit.lexval3*5+4ET+TF*TFFdigitdigitdigit.lexval=3.val=5.val=4.val=3.val=3.val=15.val=4.val=4.val=15.val=19.val=5继承属性在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定。继承属性在程序设计语言中的作用表示程序设计语言上下文结构的依赖

8、性对于赋值号,其左边和右边的标识符在操作的时候需要提供的属性不同,这时候就要跟踪标识符的继承属性。如果在赋值号左边,则需要地址,右边则需要值。虽然我们

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

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

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