属性文法和语法指导翻译.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:27 大小:275KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

属性文法和语法指导翻译.ppt

属性文法和语法指导翻译.ppt

预览

免费试读已结束,剩余 17 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

6.1属性文法文法符号的属性:为文法符号(终结符或非终结符)配备的某相关的“值”(称为属性)。属性是与文法符号相关的信息,往往代表该符号表示的某类语义信息,例如:类型、值、代码等等。属性可以计算和传递。属性加工过程即是语义处理过程。语义规则:每个产生式配备的一组属性计算规则。属性的分类:综合属性和继承属性综合属性:用于自下而上传递信息继承属性:用于自上而下传递信息属性的计算规则:设有产生式A—>定义b:=f(c1,c2,……,ck)f是一个计算函数,并且(a)b是A的一个综合属性并且c1,c2,……,ck是产生式右边文法符号的属性.或者(b)b是产生式右边某文法符号的一个继承属性并且c1,c2,……,ck是A或产生式右边任何文法符号的属性注意:终结符只有综合属性,它们由词法分析器提供非终结符既可有综合属性也可有继承属性,文法开始符的所有继承属性为属性计算前的初始值属性计算规则中仅能使用相应产生式中的文法符号的属性产生式左边的继承属性和产生式右边的文法符号的综合属性由其它产生式的属性规则计算一个句型的语法树可以加以扩充,用来表示句型分析中得到的各个符号的属性间的关系:语法树中,一个结点的综合属性的值由其子结点的属性值确定语法树中,一个结点的继承属性的值由该结点的父结点和(或)兄弟结点的某些属性值确定6.2基于属性文法的处理方法6.2.1依赖图依赖图的构造:为语法树中的每个符号的每个属性设置一个结点,如果属性b依赖属性c,则从c引一条有向边到b。依赖图中若无循环,则表示属性间无循环依赖关系。如果一属性文法的任一语法树的依赖图中无循环,则该文法为良定义的。属性的计算次序:一个有向非循环图的拓扑序是图中结点的任何顺序m1,m2,。。。,mk,使得图中的边必须是从序列中前面的结点指向后面的结点,既若mi—>mj是mi到mj的一条边,那么mi必须出现在mj之前.6.2.2树遍历的属性计算方法6.3S-属性文法的自下而上计算由于文法中的符号只含综合属性,故可以在自下而上的语法分析中将产生式右边各个符号的属性和文法符号联系在一起放在分析栈中。这样在句柄规约时调用综合属性计算子函数计算出产生式左边非终结符的综合属性。6.4L—属性文法和自顶向下翻译6.4.1翻译模式注意:(1)产生式右边的符号的继承属性必须在该符号以前的动作中计算出来。(2)一个动作不能引用该动作右边的符号的综合属性。(3)产生式左边非终结符的综合属性只有在它所引用的所有属性都计算出来以后才能计算。该计算通常放在产生式右端的尾部。6.4.2自顶向下翻译6.5自下而上计算继承属性在自下而上语法分析中综合属性的计算是很容易进行的,继承属性计算则较为困难。考虑到某符号A的继承属性是由产生式右部该符号左边的某符号B的属性传递而来,而规约A符号时B已规约得到,B的继承和综合属性均已计算出,并且和B符号一起放在分析栈中。在A符号规约时我们知道符号B在分析栈中的位置,故可在规约A的过程中准确的找到B的属性,从而使用B的属性来计算A规约过程中出现的某些属性。