第16讲-语义分析-II.ppt
《第16讲-语义分析-II.ppt》由会员分享,可在线阅读,更多相关《第16讲-语义分析-II.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/1/211/97编译原理和技术编译原理和技术大连理工软件学院大连理工软件学院大连理工软件学院大连理工软件学院胡胡 彦彦2023/1/212/97本讲纲要本讲纲要综合属性综合属性继承属性继承属性2023/1/213/974.1 语法制导的定义语法制导的定义4.1.2 综合属性S属性定义:仅仅使用综合属性的语法制导定义产产 生生 式式 语语 义义 规规 则则 L L E E n n print print(E E.valval)E E E E1 1+T T E E.valval:=:=E E1 1.valval+T.valT.val E E T T E E.valval:=:=T.val
2、T.val T T T T1 1*F F T.valT.val:=:=T T1 1.valval *F.valF.val T T F F T.valT.val:=:=F.valF.val F F(E E)F.valF.val:=:=E.valE.val F F digit digit F.vaF.val l:=:=digitdigit.lexval.lexval2023/1/214/974.1 语法制导的定义语法制导的定义8+5*2 n的注释分析树digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.v
3、alval =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=5每个结点的属性值都标每个结点的属性值都标每个结点的属性值都标每个结点的属性值都标注出来的分析树,称为注出来的分析树,称为注出来的分析树,称为注出来的分析树,称为。2023/1/215/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexva
4、l =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/216/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.va
5、lval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/217/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.lexvaldigit.lexval=2=2L LE.valE.val =1818n nT.v
6、alT.val =1010E.valE.val=8=8T.valT.val=8=8F.valF.val=8=8digit.lexvaldigit.lexval=8=8T.valT.val=5=5+*F.valF.val=5=5F.valF.val=2=2digit.lexvaldigit.lexval=5=58+5*2 8+5*2 n n2023/1/218/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval
7、 =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/219/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval
8、 =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/2110/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valva
9、l =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/2111/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valval =8=8digit.di
10、git.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/2112/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexv
11、al =8=8T T.valval =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/2113/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.val
12、val =5=5+*F F.valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/2114/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.
13、valval =5=5F F.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/2115/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval =2=2L LE E.valval =18=18n nT T.valval =10=10E E.valval =8=8T T.valval =8=8F F.valval =8=8digit.digit.lexvallexval =8=8T T.valval =5=5+*F F.valval =5=5F F
14、.valval =2=2digit.digit.lexvallexval =5=58+5*2 8+5*2 n n2023/1/2116/974.1 语法制导的定义语法制导的定义注释分析树:结点的属性值都标注出来的分析树digit.lexval=2LE.val=18nT.val=10E.val=8T.val=8F.val=8digit.lexval=8T.val=5+*F.val=5F.val=2digit.lexval=58+5*2 8+5*2 n n2023/1/2117/974.1 语法制导的定义语法制导的定义4.1.3 继承属性int id,id,id产产 生生 式式 语语 义义 规规
15、则则 D D TLTL T T intint T T real real L L L L1 1,id,id L L id id L.inL.in:=:=T.typeT.typeT.type:=integerT.type:=integerT.type:=realT.type:=realL L1 1.in:=.in:=L.inL.in;addtypeaddtype(id.entryid.entry,L.inL.in)addtypeaddtype(id.entryid.entry,L.inL.in)综合属性计算综合属性计算综合属性计算综合属性计算2023/1/2118/974.1 语法制导的定义语法
16、制导的定义int id1,id2,id3的注释分析树D DintintT T.type type=integerinteger,idid3 3L L.in in=integerintegerL L.in in=integerintegerL L.in in=integerintegeridid2 2idid1 1,2023/1/2119/97本讲纲要本讲纲要综合属性综合属性继承属性继承属性属性计算属性计算依赖图依赖图属性计算次序属性计算次序2023/1/2120/974.1 语法制导的定义语法制导的定义4.1.4 属性依赖图int id1,id2,id3的分析树的依赖图 D D TLTL L
17、L.inin:=:=T T.typetypeD D intintT T,idid3 3L LL LL Lidid2 2idid1 1,1 1 entryentry10102 2 entryentry3 3 entryentryin in 9 98 8in in 7 76 6in in 5 54 4 typetype2023/1/2121/974.1 语法制导的定义语法制导的定义4.1.4 属性依赖图int id1,id2,id3的分析树的依赖图L L L L1 1,id ,id L L1 1.in.in:=:=L L.inin;addtypeaddtype(id.(id.entryentry,
18、L L.inin)D D intintT T,idid3 3L LL LL Lidid2 2idid1 1,1 1 entryentry10102 2 entryentry3 3 entryentryin in 9 98 8in in 7 76 6in in 5 54 4 typetype2023/1/2122/974.1 语法制导的定义语法制导的定义4.1.5 属性计算次序拓扑排序拓扑排序:结点的一种排序,使得边只会从该次序中:结点的一种排序,使得边只会从该次序中先出现的结点到后出现的结点。先出现的结点到后出现的结点。例:例:1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9
19、 9,1010D D intintT T,idid3 3L LL LL Lidid2 2idid1 1,1 1 entryentry10102 2 entryentry3 3 entryentryin in 9 98 8in in 7 76 6in in 5 54 4 typetype2023/1/2123/974.1 语法制导的定义语法制导的定义属性计算次序1 1、构造输入的分析树,、构造输入的分析树,2 2、构造属性依赖图,、构造属性依赖图,3 3、对结点进行拓扑排序、对结点进行拓扑排序4 4、按拓扑排序的次序计算属性。、按拓扑排序的次序计算属性。2023/1/2124/97温故知新温故知
20、新属性的理解属性的理解非终结符非终结符分析过程(函数)分析过程(函数)综合属性综合属性过程的返回值过程的返回值继承属性继承属性过程的参数过程的参数2023/1/2125/97属性理解属性理解例子例子intint id,id,id id,id,id产产 生生 式式 语语 义义 规规 则则 D D TLTL L L.inin:=:=T T.typetype T T intint T T.type type:=:=integerinteger T T real real T T.type type:=:=realreal L L L L1 1,id,id L L1 1.in.in:=:=L L.in
21、in;addtypeaddtype(id.(id.entryentry,L L.inin)L L id id addtypeaddtype(id.(id.entryentry,L L.inin)温故知新温故知新2023/1/2126/97属性理解属性理解例子例子void D()void D()T_tempT_temp=T();=T();L_inL_in=T_tempT_temp;L(L_inL(L_in););return;return;intint T()T()switch switch lookaheadlookahead case INT:return INTEGER;case INT:
22、return INTEGER;case REAL:return REAL;case REAL:return REAL;default:error;default:error;产产 生生 式式 语语 义义 规规 则则 D D TLTL L L.inin:=:=T T.typetype T T intint T T.type type:=:=integerinteger T T real real T T.type type:=:=realreal L L L L1 1,id,id L L1 1.in.in:=:=L L.inin;addtypeaddtype(id.(id.entryentry,
23、L L.inin)L L id id addtypeaddtype(id.(id.entryentry,L L.inin)温故知新温故知新void void L(intL(int L_inL_in)L(L_inL(L_in););match(,);match(,);match(idmatch(id););addtype(id.entryaddtype(id.entry,L_inL_in););Void Void L(intL(int L_inL_in)match(id);match(id);addtype(id.entryaddtype(id.entry,L.inL.in););2023/1/
24、2127/974.2 S属性定义的自下而上计算属性定义的自下而上计算 4.2.1 语法树语法树是分析树的浓缩表示语法树是分析树的浓缩表示:算符和关键字是作为算符和关键字是作为内部结点。内部结点。语法制导翻译可以基于分析树,也可以基于语法树语法制导翻译可以基于分析树,也可以基于语法树语法树的例子:语法树的例子:if-then-elseif-then-elseB BS S1 1S S2 2S S if B then S1 else S2 if B then S1 else S2S SB BS S1 1S S2 2if ifthenthenelseelse语法树语法树语法树语法树分析树分析树分析树分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 16 语义 分析 II
限制150内