编译技术编译原理 (35).pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《编译技术编译原理 (35).pdf》由会员分享,可在线阅读,更多相关《编译技术编译原理 (35).pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、编译技术语 法 制 导 的 翻 译删除翻译方案中嵌入的动作但是,自上而下分析能够处理的文法局限于LL(1)为了为更为一般的文法计算L属性,需要研究自下而上的L属性计算方法L 属 性 的 自 下 而 上 计 算L 属 性 的 自 下 而 上 计 算L属性的自上而下计算与自上而下的语法分析的过程是一致的分析栈上的继承属性模拟继承属性的计算L 属 性 的 自 下 而 上 计 算在自下而上语法分析的框架中实现L属性定义的方法,可以做到:实现任何基于实现任何基于LL(1)文法的文法的L属性定义。属性定义。实现许多(但不是所有的)基于实现许多(但不是所有的)基于LR(1)的的L属性定义。属性定义。L 属
2、性 的 自 下 而 上 计 算L属性自下而上计算需要解决的问题:AX Y Z.i=X.x Z解决办法:在栈上消除继承属性解决办法:在栈上消除继承属性一个状态(文法符号)对应一个综合属性,该属性的值一般在处理完该文法符号之后得到。那么在Z还没有开始处理前,继承属性Z.i 就没有对应的val条目供其使用!.YY.yXX.x.栈栈state valtop删 除 翻 译 方 案 中 嵌 入 的 动 作问题问题的解决方案:自下而上的分析中,语义动作的执行是在使用产生式对句柄进行归约的时候 但是,L属性定义的继承属性的计算需要嵌在产生式右部不同的地方 通过改写文法,使得所有嵌入在产生式中间的动作变换成只在
3、产生式的最右端出现删 除 翻 译 方 案 中 嵌 入 的 动 作特殊情况一:删除翻译方案中嵌入的动作E T RR +T print(+)R1|T print()R1|T num print(num.val)在文法中加入产生的标记非终结符,让每个嵌入动作由不同标记非终结符M 代表,并把该动作放在产生式M 的右端。E T RR+T M R1|T N R1|T num print(num.val)M print(+)N print()分 析 栈 上 的 继 承 属 性特殊情况二:分析栈上的继承属性所依赖的属性在分析栈上的位置能静态确定所依赖的属性在分析栈上的位置能静态确定例例 int p,q,rD
4、TL.in:=T.typeLT intT.type:=integerT real T.type:=realLL1.in:=L.in L1,id addtype(id.entry,L.in)L idaddtype(id.entry,L.in)复写规则分 析 栈 上 的 继 承 属 性特殊情况二:分析栈上的继承属性属性位置能预测属性位置能预测L id addtype(id.entry,L.in)LL1.in:=L.inL1,id addtype(id.entry,L.in)LL1.in:=L.inL1,id addtype(id.entry,L.in)DTLL,rL,qpint type inin
5、in状态状态输入输入所用产生式所用产生式-int p,q,rint p,q,rTp,q,rTintTp,q,rTL,q,rLidTL,q,rTL,q,rTL,rLL,idTL,rTL,rTLLL,idDDTL分 析 栈 上 的 继 承 属 性属性T.type在栈中的位置相对于栈顶是事先知道的。因此,可以用栈中的属性值T.type代替L.in。产产 生生 式式代代码码段段D TLT int stacktop.val:=integerT real stacktop.val:=realL L1,id addtype(stacktop.val,stacktop 3.val)L id addtype(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译技术编译原理 35 编译 技术 原理 35
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内