编译原理课程第14讲.ppt

编译原理课程第14讲.ppt

ID:51593433

大小:709.50 KB

页数:37页

时间:2020-03-25

编译原理课程第14讲.ppt_第1页
编译原理课程第14讲.ppt_第2页
编译原理课程第14讲.ppt_第3页
编译原理课程第14讲.ppt_第4页
编译原理课程第14讲.ppt_第5页
资源描述:

《编译原理课程第14讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、4.3L属性定义的自上而下计算例左递归的消除引起继承属性产生式语义规则EE1+TE.nptr:=mknode(‘+’,E1.nptr,T.nptr)ETE.nptr:=T.nptrTT1*FT.nptr:=mknode(‘*’,T1.nptr,F.nptr)TFT.nptr:=F.nptrF(E)F.nptr:=E.nptrFidF.nptr:=mkleaf(id,id.entry)FnumF.nptr:=mkleaf(num,num.val)4.3L属性定义的自上而下计算ET{R.i:=T.np

2、tr}T+T+T+…R{E.nptr:=R.s}R+T{R1.i:=mknode(‘+’,R.i,T.nptr)}R1{R.s:=R1.s}R{R.s:=R.i}TF{W.i:=F.nptr}W{T.nptr:=W.s}W*F{W1.i:=mknode(‘*’,W.i,F.nptr)}W1{W.s:=W1.s}W{W.s:=W.i}消除左递归后文法RRR+T.nptr?4.3L属性定义的自上而下计算TF.nptrF.nptridiWF.nptridnumididnum5指向符号表中a的入口指

3、向符号表中b的入口iWsiW略去了ETRT部分使用继承属性构造a-4+c的抽象语法树ETRidToentryforaidT.nptr-Tnumnum4T.nptrR.i-R+TRidToentryforcidT.nptrR.i+R.iR.sR.sR.sE.nptrE→T{R.i:=T.nptr}R{E.nptr:=R.s}R→+T{R1.i:=mknode(‘+’,R.i,T.nptr)}R1{R.s:=R1.s}R→-T{R1.i:=mknode(‘-’,R.i,T.nptr)}R1{R.s:=R.s}

4、R→{R.s:=R.i}T→(E){T.nptr:=E.nptr}T→id{T.nptr:=mkleaf(id,id.entry)}T→num{T.nptr:=mkleaf(num,num.val)}4.3L属性定义的自上而下计算4.3.3预测翻译器的设计把预测分析器的构造方法推广到翻译方案的实现产生式R+TR

5、的分析过程procedureR;beginiflookahead=‘+’thenbeginmatch(‘+’);T;R;endelsebegin/*什么也不做*/endend4.3L属性定义的自上而

6、下计算functionR(i:syntax_tree_node):syntax_tree_node;varnptr,i1,s1,s:syntax_tree_node;addoplexeme:char;beginiflookahead=‘+’thenbegin/*产生式R+TR*/addoplexeme:=lexval;match(‘+’);nptr:=T();i1:=mknode(addoplexme,i,nptr);s1:=R(i1);s:=s1endelses:=i;/*产生式R*/returns

7、end;R+T{R1.i:=mknode(‘+’,R.i,T.nptr)}R1{R.s:=R1.s}产生式R+TR

8、的翻译方案过程4.3L属性定义的自上而下计算4.3.4(通过改写文法)用综合属性代替继承属性Pascal的声明,如m,n:integerDL:TTinteger

9、charLL,id

10、idD:L,idLidintegerT4.3L属性定义的自上而下计算4.3.4用综合属性代替继承属性Pascal的声明,如m,n:integerDL:TTinteger

11、charLL,id

12、id改成从右

13、向左归约DidLL,idL

14、:TTinteger

15、char4.3L属性定义的自上而下计算4.3.4用综合属性代替继承属性Pascal的声明,如m,n:integerDL:TTinteger

16、charLL,id

17、id改成从右向左归约DidLL,idL

18、:TTinteger

19、charD:L,idLidintegerT4.3L属性定义的自上而下计算DidL{addtype(id.entry,L.type)}L,idL1{L.type:=L1.Type;addtype(id.entry,L1.typ

20、e)}L:T{L.type:=T.type}Tinteger{T.type:=integer}Treal{T.type:=real}D:L,idLidintegerT10/374.4L属性的自下而上计算在自下而上语法分析的框架中实现L属性定义的方法,可以做到:实现任何基于LL(1)文法的L属性定义。实现许多(但不是所有的)基于LR(1)的L属性定义。4.4L属性的自

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。