for 语法树中每一结点ndo for结点n的文法符号的每一个属性ado 为a在依赖图中建立一个结点; for语法树中每一个结点ndo for结点n所用产生式对应的每一个语义规则 b=f(c1,C2,,Ck)do for i:=1 to k do 从c结点到b结点构造一条有向边; 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 for 语法树中每一结点n do for 结点n的文法符号的每一个属性a do 为a在依赖图中建立一个结点; for语法树中每一个结点n do for 结点n所用产生式对应的每一个语义规则 b:=f(c1 ,c2 ,…,ck ) do for i:=1 to k do 从ci结点到b结点构造一条有向边;
E→E1+E2 E.val:=E.val+E2.val val E val val 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 E→E1+E2 E.val:=E1 .val+E2 .val E1 + E2 E val val val
产生式 语义规则 句子real id,id2,id3的 D→TL L.in :T.type T→int 带注释的语法树的依赖图 T.type:=integer T-real T.type:=real →L1,idL1in=L.in addtype(id.entry,L.in) →id addtype(id.entry,L.in) 6-addtype(id.entry,L.in) type real addtype 8 id, 3 entry addtype 2 id, entry entry 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 句子real id1,id2,id3的 带注释的语法树的依赖图 id1 L , id2 L , id3 L real T D 4 type 5 in 6 - addtype(id.entry, L.in) 7 in 8 addtype 9 in 10 addtype 1 entry 2 entry 3 entry 产 生 式 语 义 规 则 D→TL L.in := T.type T→int T.type := integer T→real T.type := real L→L1 , id L1 .in :=L.in addtype(id.entry, L.in) L→id addtype(id.entry, L.in)
自 如果一属性文法不存在属性之间的循环依 赖关系,那么称该文法为良定义的 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 如果一属性文法不存在属性之间的循环依 赖关系,那么称该文法为良定义的
属性的计算次序 ■ 一个依赖图的任何拓扑排序都给出一个语法树 中结点的语义规则计算的有效顺序 ■属性文法说明的翻译是很精确的 口基础文法用于建立输入符号串的语法分析树 ▣根据语义规则建立依赖图 口从依赖图的拓扑排序中,我们可以得到计算语义规 则的顺序 输入串→语法树→依赖图→语义规则计算次序 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 属性的计算次序 ◼ 一个依赖图的任何拓扑排序都给出一个语法树 中结点的语义规则计算的有效顺序 ◼ 属性文法说明的翻译是很精确的 基础文法用于建立输入符号串的语法分析树 根据语义规则建立依赖图 从依赖图的拓扑排序中,我们可以得到计算语义规 则的顺序 输入串 语法树 依赖图 语义规则计算次序