编译原理6-2-基于属性文法的处理方法.ppt
《编译原理6-2-基于属性文法的处理方法.ppt》由会员分享,可在线阅读,更多相关《编译原理6-2-基于属性文法的处理方法.ppt(20页珍藏版)》请在三一办公上搜索。
1、第六章 属性文法和语法制导翻译,6.1 属性文法6.2 基于属性文法的处理方法6.3 S-属性文法的自下而上计算6.4 L-属性文法和自顶向下翻译6.5 自下而上计算继承属性,6.2 基于属性文法的处理方法,6.2.1 依赖图6.2.2 树遍历的属性计算方法6.2.3 一遍扫描的处理方法6.2.4 抽象语法树,语法制导翻译法(syntax-directed translation)由源程序的语法结构驱动翻译过程,输入串,语法树,依赖图,语义规则计算次序,图6.3 语法制导翻译概观,描述一棵语法树中结点的属性之间的相互依赖关系,也可在语法分析的同时完成语义规则的计算(一遍扫描),语义规则的形式
2、b:=f(c1,c2,ck)可以为每一个包含过程调用的语义规则引入一个虚综合属性 b,依赖图中为每一个属性设置一个结点,如果属性b依赖于属性c,则从属性c的结点 有一条有向边连到属性b的结点。,6.2.1 依赖图,b,c1,ck,for 语法树中每一结点n dofor 结点n的文法符号的每一个属性a do 为a在依赖图中建立一个结点;for 语法树中每一个结点n dofor 结点n所用产生式对应的每一个语义规则 b:f(c1,c2,ck)do for i:=1 to k do 从ci结点到b结点构造一条有向边;,依赖图的构造步骤,val,val,val,虚线表示语法树,实线表示依赖图,real
3、 id1,id2,id3 的语法分析树的依赖图,D,real,T,id3,L,L,L,id2,id1,1 entry,10,2 entry,3 entry,in 9,8,in 7,6,in 5,4 type,图 6.5 图6.2中语法分析树的依赖图,虚结点,属性的计算次序,一个依赖图的任何拓扑排序都给出一个语法树中结点的语义规则计算的有效顺序。例6.5 在图6.5的依赖图中,依赖图的一个拓扑排序可以从低序号到高序号顺序写出。用an来代表依赖图中与序号n的结点有关的属性。,a4:=real;a5:=a4;addtype(id3.entry,a5)a7:=a5;addtype(id2.entry,
4、a7)a9:=a7;addtype(id1.entry,a9),6.2.2 树遍历的属性计算方法,以某种次序遍历语法树,直至计算出所有属性。最常用的遍历方法是深度优先,从左到右的遍历方法。如果需要的话,可使用多次遍历。,*下面算法可对任何无循环的属性文法进行计算,While 还有未被计算的属性 doVisitNode(S)/*S是开始符号*/procedure VisitNode(N:Node);begin if N VN then/*假设它的产生式为NX1 X2Xm*/for i:=1 to m do if XiVN then/*即Xi 是非终结符*/begin 计算 Xi 的所有能够计算的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 基于 属性 文法 处理 方法
链接地址:https://www.31ppt.com/p-6599809.html