《语义分析iv》ppt课件

上传人:tian****1990 文档编号:74919435 上传时间:2019-01-30 格式:PPT 页数:42 大小:1.10MB
返回 下载 相关 举报
《语义分析iv》ppt课件_第1页
第1页 / 共42页
《语义分析iv》ppt课件_第2页
第2页 / 共42页
《语义分析iv》ppt课件_第3页
第3页 / 共42页
《语义分析iv》ppt课件_第4页
第4页 / 共42页
《语义分析iv》ppt课件_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《《语义分析iv》ppt课件》由会员分享,可在线阅读,更多相关《《语义分析iv》ppt课件(42页珍藏版)》请在金锄头文库上搜索。

1、编译原理和技术,大连理工软件学院 胡 彦 ,本讲纲要,模拟继承属性计算 继承属性在栈上的位置确定 继承属性在栈上的位置不确定,4.4 L属性的自下而上计算,继承属性在栈上某个确定位置的例子,4.4 L属性的自下而上计算,每个L结点上L.in = T.type,L id addtype (id.entry, L.in ),L L1.in := L.in L1, id addtype (id.entry, L.in ),L L1.in := L.in L1, id addtype (id.entry, L.in ),继承属性在栈上某个确定位置的例子,4.4 L属性的自下而上计算,所依赖的属性在分析

2、栈上的位置不能静态确定 S aAC C.i := A.s S bABC C.i := A.s C c C.s := g(C.i),考虑一下:当分析栈中出现符号C的时候,C.i可能存放在什么位置,情况1:当前句柄是aAC,这时C.i可以用valtop-1表示,情况2:当前句柄是bABC,这时C.i可以用valtop-2表示,4.4 L属性的自下而上计算,所依赖的属性在分析栈上的位置不能静态确定 S aAC C.i := A.s S bABC C.i := A.s C c C.s := g(C.i),处理办法:增加标记非终结符 S aAC C.i := A.s S bABMC M.i := A.s

3、; C.i := M.s C c C.s := g(C.i) M M.s := M.i,4.4 L属性的自下而上计算,所依赖的属性在分析栈上的位置不能静态确定 S aAC C.i := A.s S bABC C.i := A.s C c C.s := g(C.i),处理办法:增加标记非终结符 S aAC C.i := A.s S bABMC M.i := A.s; C.i := M.s C c C.s := g(C.i) M M.s := M.i,4.4 L属性的自下而上计算,4.4.3 一般情况:模拟继承属性的计算 继承属性是某个综合属性的一个函数 S aAC C.i := f (A.s)

4、C c C.s := g(C.i),例如:f(x)=2*x 或者 x+3, ,4.4 L属性的自下而上计算,4.4.3 模拟继承属性的计算 继承属性是某个综合属性的一个函数 S aAC C.i := f (A.s) C c C.s := g(C.i) 增加标记非终结符,把f(A.s)的计算移到对标记 非终结符归约时进行。 S aANC N.i := A.s; C.i := N.s N N.s := f (N.i) C c C.s := g(C.i),这样,每次需要使用继承属性的时候,刚好都在本文法符号的正下方,4.4 L属性的自下而上计算,例 数学排版语言EQN S B.ps := 10 B

5、S.ht := B.ht B B1.ps := B.ps B1 B2.ps := B.ps B2 B.ht := max(B1.ht, B2.ht ) B B1.ps :=B.ps B1 sub B2.ps := shrink(B.ps) B2 B.ht := disp (B1.ht, B2.ht ) B text B.ht := text.h B.ps ,语义分析,在计算文本的字体和高度的时候,无法确定所依赖的继承属性值的位置 例如:栈顶元素可能是 text = B B text = B B B sub text = B sub B,语义分析复习,S L B.ps := L.s B S.ht

6、 := B.ht L L.s := 10 B B1.ps := B.ps B1 M.i := B.ps M B2.ps := M.s B2 B.ht := max(B1.ht, B2.ht ) M M.s := M.i B B1.ps :=B.ps B1 sub N.i = B.ps N B2.ps := shrink(N.s) B2 B.ht := disp (B1.ht, B2.ht ) N N.s := N.i B text B.ht := text.h B.ps ,4.4 L属性的自下而上计算,4.4 L属性的自下而上计算,4.4 L属性的自下而上计算,4.4 L属性的自下而上计算,4

7、.4 L属性的自下而上计算,4.4 L属性的自下而上计算,4.4 L属性的自下而上计算,4.4 L属性的自下而上计算,4.4 L属性的自下而上计算,语义分析复习,串( E1.val ): E sub 1 .val,L,语义分析复习,串( E1.val ): E sub 1 .val,L,t,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,要为B计算B.ht,需要的ps值在L.s中,top,top-1,B.ht=t.ht* B.ps,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,语义分析复习,串( E1.val ): E su

8、b 1 .val,L,t,B,sub,N,top,top-3,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,t,N,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,t,B,N,要为B计算B.ht,需要的ps值在N.s中,top,top-1,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,t,B,N,B,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,t,B,N,B,M,top,top-2,语义分析复习,串( E1.val ): E sub 1

9、 .val,L,t,B,sub,t,B,N,B,M,t,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,t,B,N,B,t,B,M,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,t,B,N,B,t,B,M,B,语义分析复习,串( E1.val ): E sub 1 .val,L,t,B,sub,t,B,N,B,t,B,M,B,S,例 题 1,为文法 S ( L ) | a L L , S | S 写一个语法制导定义,它输出括号的对数。 首先,分析问题 (1)需要定义哪些属性值 属性num,表示相应符号中括号的对数 (

10、2)属性值为哪些符号定义? L, S (3)num属性属于综合属性还是继承属性?,综合属性!因为产生式左部符号的num值要依赖于产生式右部每个符号的属性值,例 题 1,为文法 S ( L ) | a L L , S | S 写一个语法制导定义,它输出括号的对数。 S S print (S. num) S ( L ) S. num := L.num + 1 S a S. num := 0 L L1 , S L. num := L1. num + S. num L S L. num := S.num,例 题 1,为文法 S ( L ) | a L L , S | S 写一个语法制导定义,它输出括号

11、的对数。 构建翻译方案: S S print (valtop) S ( L ) S. num := L.num + 1 S a S. num := 0 L L1 , S L. num := L1. num + S. num L S L. num := S.num,栈 state val,top,例 题 1,为文法 S ( L ) | a L L , S | S 写一个语法制导定义,它输出括号的对数。 S S print (valtop) S ( L ) valtop-2 := valtop-1 S a S. num := 0 L L1 , S L. num := L1. num + S. nu

12、m L S L. num := S.num,栈 state val,top,例 题 1,为文法 S ( L ) | a L L , S | S 写一个语法制导定义,它输出括号的对数。 S S print (valtop) S ( L ) valtop-2 := valtop-1 S a valtop := 0 L L1 , S L. num := L1. num + S. num L S L. num := S.num,栈 state val,top,例 题 1,为文法 S ( L ) | a L L , S | S 写一个语法制导定义,它输出括号的对数。 S S print (valtop)

13、 S ( L ) valtop-2 := valtop-1 S a valtop := 0 L L1 , S valtop-2:= valtop-2+valtop L S L. num := S.num,栈 state val,top,例 题 1,为文法 S ( L ) | a L L , S | S 写一个语法制导定义,它输出括号的对数。 S S print (valtop) S ( L ) valtop-2 := valtop-1 S a valtop := 0 L L1 , S valtop-2:= valtop-2+valtop L S -,栈 state val,top,习 题,4.5 ,4.7,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号