第16讲-语义分析-II

上传人:枫** 文档编号:586486111 上传时间:2024-09-04 格式:PPT 页数:47 大小:792.50KB
返回 下载 相关 举报
第16讲-语义分析-II_第1页
第1页 / 共47页
第16讲-语义分析-II_第2页
第2页 / 共47页
第16讲-语义分析-II_第3页
第3页 / 共47页
第16讲-语义分析-II_第4页
第4页 / 共47页
第16讲-语义分析-II_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《第16讲-语义分析-II》由会员分享,可在线阅读,更多相关《第16讲-语义分析-II(47页珍藏版)》请在金锄头文库上搜索。

1、2024/9/41/97编译原理和技术编译原理和技术大连理工软件学院大连理工软件学院大连理工软件学院大连理工软件学院胡胡 彦彦2024/9/42/97本讲纲要本讲纲要综合属性综合属性继承属性继承属性2024/9/43/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

2、T E E. .valval := := T.valT.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.lexval2024/9/44/974.1 语法制导的定义语法制导的定义8+5*2 n的注释分析树digit.digit.lexvallexv

3、al = 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= 5每个结点的属性值都标每个结点的属性值都标每个结点的属性值都标每个结点的属性值都标注出来的分析树,称为注出来的分析树,称为注

4、出来的分析树,称为注出来的分析树,称为。2024/9/45/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. .valval = 2= 2

5、digit.digit.lexvallexval = 5= 58+5*2 8+5*2 n n2024/9/46/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

6、 = 5= 5F F. .valval = 2= 2digit.digit.lexvallexval = 5= 58+5*2 8+5*2 n n2024/9/47/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.lexvaldigit.lexval = 2 = 2L LE.valE.val = = 1818n nT.valT.val = = 1010E.valE.val = 8 = 8T.valT.val = 8 = 8F.valF.val = 8 = 8digit.lexvaldigit.lexval = 8 = 8T.valT.val = 5 =

7、 5+ +* *F.valF.val = 5 = 5F.valF.val = 2 = 2digit.lexvaldigit.lexval = 5 = 58+5*2 8+5*2 n n2024/9/48/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.lexvallexva

8、l = 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 n2024/9/49/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

9、= 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 n2024/9/410/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval = 2= 2L LE E. .valval = 18= 18n nT T. .valval = 10= 10E E. .valval = 8= 8T T. .va

10、lval = 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 n2024/9/411/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval = 2= 2L LE E. .valval = 18= 18n nT T. .valval = 10= 10

11、E 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 n2024/9/412/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval = 2= 2L LE E. .valval = 18=

12、 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 n2024/9/413/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地完成digit.digit.lexvallexval

13、= 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 n2024/9/414/974.1 语法制导的定义语法制导的定义分析树各结点属性的计算可以自下而上地

14、完成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. .valval = 2= 2digit.digit.lexvallexval = 5= 58+5*2 8+5*2 n n2024/9/415/974.1 语法制导的

15、定义语法制导的定义分析树各结点属性的计算可以自下而上地完成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. .valval = 2= 2digit.digit.lexvallexval = 5= 58+5*2 8+5*

16、2 n n2024/9/416/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 n2024/9/417/974.1 语法制导的定义语法制导的定义4.1.3 继承属性int id, id, id产产 生生 式式 语语 义义 规规 则则 D D TLTL T T intint T T re

17、al 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 ) ) 综合属性计算综合属性计算综合属性计算综合属性计算2024/9/418/9

18、74.1 语法制导的定义语法制导的定义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, ,2024/9/419/97本讲纲要本讲纲要综合属性综合属性继承属性继承属性属性计算属性计算依赖图依赖图属性计算次序属性计算次序2024/9/420/974.1 语法制导的定义语法制导的定义4.1.

19、4 属性依赖图int id1, id2, id3的分析树的依赖图 D D TLTL L 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 typetype2024/9/421/974.1 语法制导的定义语法制导的定义4.1.4 属性依赖图int id1, id2, id3的分析树的依赖图L L L L1 1, id , id

20、L L1 1.in.in := := L L. .inin; ; addtypeaddtype (id. (id.entryentry, , 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 typetype2024/9/422/974.1 语法制导的定义语法制导的定义4.1.5 属性计算次序拓扑排序拓扑排序:结点的一种排序,使得边只会从该次序中:结点的

21、一种排序,使得边只会从该次序中先出现的结点到后出现的结点。先出现的结点到后出现的结点。例:例:1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 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 typetype2024/9/423/974.1 语法制导的定义语法制导的定义属性计算次序1 1、构造输入的分析树,、构造输入的分析树,2 2、构造属性依赖图,、

22、构造属性依赖图,3 3、对结点进行拓扑排序、对结点进行拓扑排序4 4、按拓扑排序的次序计算属性。、按拓扑排序的次序计算属性。2024/9/424/97温故知新温故知新属性的理解属性的理解非终结符非终结符分析过程(函数)分析过程(函数)综合属性综合属性过程的返回值过程的返回值继承属性继承属性过程的参数过程的参数2024/9/425/97属性理解属性理解例子例子intint id, id, id id, id, id产产 生生 式式 语语 义义 规规 则则 D D TLTL L L. .inin := := T T. .typetype T T intint T T. . type type :=

23、 := 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, , L L. .inin ) ) L L id id addtypeaddtype (id. (id.entryentry, , L L. .inin ) ) 温故知新温故知新2024/9/426/97属性理解属性理解例子例子void D()void D() T_tempT_temp = T

24、(); = 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: return INTEGER; case REAL: return REAL; case REAL: return REAL; default: error; default: error; 产产 生生 式式 语语 义义 规规 则则 D D TLTL L L. .inin := :=

25、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, , L L. .inin ) ) L L id id addtypeaddtype (id. (id.entryentry, , L L. .inin ) ) 温故知新温故知新void void L(i

26、ntL(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);); 2024/9/427/974.2 S属性定义的自下而上计算属性定义的自下而上计算 4.2.1 语法树语法树是分析树的浓缩表示语法树是分析树的浓缩表

27、示:算符和关键字是作为算符和关键字是作为内部结点。内部结点。 语法制导翻译可以基于分析树,也可以基于语法树语法制导翻译可以基于分析树,也可以基于语法树语法树的例子:语法树的例子: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语法树语法树语法树语法树分析树分析树分析树分析树2024/9/428/974.2 S属性定义的自下而上计算属性定义的自下而上计算4.2.2 (例)用于构造语法树的语法制导定义产

28、产 生生 式式语语 义义 规规 则则 E E E E1 1 + + T T E E. .nptrnptr := := mknodemknode( +, ( +, E E1 1. .nptrnptr, , T T. .nptrnptr) ) E E T T E E. .nptrnptr := := T T. .nptrnptr T T T T1 1* *F F T T. .nptrnptr := := mknodemknode( ( * *, , T T1 1. .nptrnptr, , F F. .nptrnptr) ) T T F F T T. .nptrnptr := := F F. .n

29、ptrnptr F F ( (E E) ) F F. .nptrnptr := := E E. .nptrnptr F F id id F F. .nptrnptr := := mkleafmkleaf (id, id.(id, id.entryentry) ) F F num num F F. .nptrnptr := := mkleafmkleaf (num, (num, num.num.valval) ) 2024/9/429/974.2 S属性定义的自下而上计算属性定义的自下而上计算a a+5+5* *b b的语法树的构造的语法树的构造E E. .nptrnptrT T. .nptrn

30、ptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (E E) ) F F id | num id |

31、 num2024/9/430/974.2 S属性定义的自下而上计算属性定义的自下而上计算a+5*b的语法树的构造E E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E

32、E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (E E) ) F F id | num id | num2024/9/431/974.2 S属性定义的自下而上计算属性定义的自下而上计算a+5*b的语法树的构造E E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + +

33、+指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (E E) ) F F id | num id | num2024/9/432/974.2 S属性定义的自下而上计算属性定义的自下而上计算a+5*b的语法树的构造E E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .np

34、trnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (E E) ) F F id | num id | num2024/9/433/974.2 S属性定义的自下而上计算属性定义的自下而上计算a+5*b的语法树的构造E

35、 E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (

36、E E) ) F F id | num id | num2024/9/434/974.2 S属性定义的自下而上计算属性定义的自下而上计算a+5*b的语法树的构造E E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表

37、中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (E E) ) F F id | num id | num2024/9/435/974.2 S属性定义的自下而上计算属性定义的自下而上计算a+5*b的语法树的构造E E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumidididi

38、dnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (E E) ) F F id | num id | num2024/9/436/974.2 S属性定义的自下而上计算属性定义的自下而上计算a+5*b的语法树的构造E E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF

39、F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1 1 * * F F | |F F F F ( (E E) ) F F id | num id | num2024/9/437/974.2 S属性定义的自下而上计算

40、属性定义的自下而上计算a+5*b的语法树的构造E E. .nptrnptrT T. .nptrnptrE E. .nptrnptrT T. .nptrnptrF F. .nptrnptrididT T. .nptrnptr+ +* *F F. .nptrnptrF F. .nptrnptrididnumnumididididnum 5num 5* * * *+ + + +指向符号表中指向符号表中指向符号表中指向符号表中a a的入口的入口的入口的入口指向符号表中指向符号表中指向符号表中指向符号表中b b的入口的入口的入口的入口E E E E1 1 + + T T | T | TT T T T1

41、1 * * F F | |F F F F ( (E E) ) F F id | num id | num2024/9/438/974.2 S属性定义的自下而上计算属性定义的自下而上计算4.2.3 S属性的自下而上计算(一般方法)将将LRLR分析器分析器增加增加一个域来保存综合属性值一个域来保存综合属性值。. . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop2024/9/439/974.2 S属性定义的自下而上计算属性定义的自下而上计算4.

42、2.3 S属性的自下而上计算将将LRLR分析器分析器增加增加一个域来保存综合属性值一个域来保存综合属性值。. . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop若产生式若产生式若产生式若产生式A A XYZXYZ的语义规则是的语义规则是的语义规则是的语义规则是A A. .a a := := f f ( (X X. .x x, , Y Y. .y y, , Z Z. .z z) ),那么归约后:那么归约后:那么归约后:那么归约后:. . .

43、. . . . . . .A AA A. .a a. . . . . . . . . .toptop2024/9/440/974.2 S属性定义的自下而上计算属性定义的自下而上计算台式计算器的语法制导定义改成栈操作代码台式计算器的语法制导定义改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生 式式 语语 义义 规规 则则 L L E E n n printprint ( (E E. .valval) ) E E

44、 E E1 1 + + T T E E. .valval :=:=E E1 1 . .valval + +T.valT.val E E T T E E. .valval := := T.valT.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.l

45、exval2024/9/441/974.2 S属性定义的自下而上计算属性定义的自下而上计算台式计算器的语法制导定义改成栈操作代码台式计算器的语法制导定义改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生 式式 代代 码码 段段 L L E E n n print print ( (valval toptop 1 )1 ) E E E E1 1 + + T T E E. .valval :=:=E E1 1 .

46、.valval + +T.valT.val E E T T E E. .valval := := T.valT.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.lexval2024/9/442/974.2 S属性定义的自下而上计算属性定义的自下而

47、上计算台式计算器的语法制导定义改成栈操作代码台式计算器的语法制导定义改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生 式式 代代 码码 段段 L L E E n n print print ( (valval toptop 1 )1 ) E E E E1 1 + + T T valval top top 2 :=2 :=valval top top 2+2+valval toptop E E T T E E.

48、 .valval := := T.valT.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.lexval2024/9/443/974.2 S属性定义的自下而上计算属性定义的自下而上计算台式计算器的语法制导定义改成栈操作代码台式计算器的语法制导定义

49、改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生 式式 代代 码码 段段 L L E E n n print print ( (valval toptop 1 )1 ) E E E E1 1 + + T T valval top top 2 :=2 :=valval top top 2+2+valval toptop E E T T T T T T1 1 * * F F T.valT.val := := T

50、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.lexval2024/9/444/974.2 S属性定义的自下而上计算属性定义的自下而上计算台式计算器的语法制导定义改成栈操作代码台式计算器的语法制导定义改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x

51、x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生 式式 代代 码码 段段 L L E E n n print print ( (valval toptop 1 )1 ) E E E E1 1 + + T T valval top top 2 :=2 :=valval top top 2+2+valval toptop E E T T T T T T1 1 * * F F valval top top 2 := 2 := valval top top 22 valval toptop T T F F T.valT.val := := F

52、.valF.val F F ( (E E) ) F.valF.val := := E.valE.val F F digit digit F.vaF.val l := := digitdigit.lexval.lexval2024/9/445/974.2 S属性定义的自下而上计算属性定义的自下而上计算台式计算器的语法制导定义改成栈操作代码台式计算器的语法制导定义改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生

53、式式 代代 码码 段段 L L E E n n print print ( (valval toptop 1 )1 ) E E E E1 1 + + T T valval top top 2 :=2 :=valval top top 2+2+valval toptop E E T T T T T T1 1 * * F F valval top top 2 := 2 := valval top top 22 valval toptop T T F F F F ( (E E) ) F.valF.val := := E.valE.val F F digit digit F.vaF.val l :=

54、:= digitdigit.lexval.lexval2024/9/446/974.2 S属性定义的自下而上计算属性定义的自下而上计算台式计算器的语法制导定义改成栈操作代码台式计算器的语法制导定义改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生 式式 代代 码码 段段 L L E E n n print print ( (valval toptop 1 )1 ) E E E E1 1 + + T T valv

55、al top top 2 :=2 :=valval top top 2+2+valval toptop E E T T T T T T1 1 * * F F valval top top 2 := 2 := valval top top 22 valval toptop T T F F F F ( (E E) ) valval top top 2 2 :=:=valval top top 11 F F digit digit F.vaF.val l := := digitdigit.lexval.lexval2024/9/447/974.2 S属性定义的自下而上计算属性定义的自下而上计算台式计

56、算器的语法制导定义改成栈操作代码台式计算器的语法制导定义改成栈操作代码 . . . . . . . . . .Z ZZ Z. . z zY YY Y. . y yX XX X. .x x. . . . . . . . . .栈栈栈栈 state state valvaltoptop产产 生生 式式 代代 码码 段段 L L E E n n print print ( (valval toptop 1 )1 ) E E E E1 1 + + T T valval top top 2 :=2 :=valval top top 2+2+valval toptop E E T T T T T T1 1 * * F F valval top top 2 := 2 := valval top top 22 valval toptop T T F F F F ( (E E) ) valval top top 2 2 :=:=valval top top 11 F F digit digit

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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