编译原理6-4.1-L属性文法-翻译模式

编译原理6-4.1-L属性文法-翻译模式

ID:37497916

大小:222.50 KB

页数:20页

时间:2019-05-12

编译原理6-4.1-L属性文法-翻译模式_第1页
编译原理6-4.1-L属性文法-翻译模式_第2页
编译原理6-4.1-L属性文法-翻译模式_第3页
编译原理6-4.1-L属性文法-翻译模式_第4页
编译原理6-4.1-L属性文法-翻译模式_第5页
资源描述:

《编译原理6-4.1-L属性文法-翻译模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章属性文法和语法制导翻译6.1属性文法6.2基于属性文法的处理方法6.3S-属性文法的自下而上计算6.4L-属性文法和自顶向下翻译6.5自下而上计算继承属性6.4L-属性文法和自顶向下翻译6.4.1翻译模式6.4.2自顶向下翻译6.4.3递归下降翻译器的设计L-属性文法L-属性文法可通过一次遍历就计算出所有属性值。诸如LL(1)这种自上而下分析方法的分析过程,从概念上说可以看成是深度优先建立语法树的过程我们可以在自上而下语法分析的同时实现L-属性文法的计算。L-属性文法一个属性文法称为L-属性文法如果对于每个

2、产生式A→X1X2…Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj(1<=j<=n)的一个继承属性,且这个继承属性仅依赖于:(1)产生式Xj的左边符号X1,X2,…,Xj-l的属性(2)A的继承属性S-属性文法一定是L-属性文法L-属性文法的例子6.1节☆表6.1☆表6.2产生式语义规则ALMAQRL.i:=l(A.i)M.i:=m(L.s)A.s:=f(M.s)R.i:=r(A.i)Q.i:=q(R.s)A.s:=f(Q.s)表6.7非L-属性文法的例子因为Q.i依赖于右部符号R的综合属性R.s

3、6.4.1翻译摸式翻译模式(Translationschemes)一种适合语法制导翻译的另一种描述形式。在翻译模式中,和文法符号相关的属性和语义规则(语义动作),用花括号{}括起来,插入到产生式右部的合适位置上。RaddopTR{print(addop.lexme)}RETRRaddopT{print(addop.lexme)}R

4、Tnum{print(num.lexme)}例:将含有+和-运算的中缀表达式翻译为后缀形式如表达式9-5+2后缀表示为95-2+翻译模式给出了使用语义规则进行计算的次序,这样

5、就可把某些实现细节表示出来。图6.109-5+2的说明动作的语法分析树ETR9print(9)-Tprint(‘-’)R5print(5)+Tprint(‘+’)2print(2)R12345把语义动作看作是终结符号按深度优先次序遍历分析树,即得到95-2+ETRRaddopT{print(addop.lexme)}R

6、Tnum{print(num.lexme)}参考输出后缀式的属性文法☆例如,假设有下面的产生式和语义规则:T→T1*FT.val:=T1.val*F.val建立翻译模式:T→T1*F{T

7、.val:=T1.val*F.val}只需要综合属性时,可以这样建立翻译模式:为每一个语义规则建立一个包含赋值的动作,并把这个动作放在相应的产生式右边的末尾。如果既有综合属性又有继承属性,在建立翻译模式时就必须满足三个条件(1)产生式右边的符号的继承属性必须在这个符号以前的动作中计算出来。(2)一个动作不能引用这个动作右边的符号的综合属性。(3)产生式左边非终结符的综合属性只有在它所引用的所有属性都计算出来以后才能计算。计算这种属性的动作通常可放在产生式右端的末尾。下面的翻译模式不满足上述三个条件中的第一个条件:

8、(1)产生式右边的符号的继承属性必须在这个符号以前的动作中计算出来。S→A1A2{A1.in:=1;A2.in:=2}A→a{print(A.in)}可以改为S→{A1.in:=1}A1{A2.in:=2}A2print(A.in)1print(A.in)SAaAa2{A1.in:=1;A2.in:=2}3该属性还没有定义S→{A1.in:=1}A1{A2.in:=2}A2print(A.in)1print(A.in)SAaAa2{A2.in:=2}3{A1.in:=1}4例:给定一个L-属性文法,建立一个满足上

9、述三个条件的翻译模式。基于数学格式语言EQN给定输人Esub1.ValEQN把E,1和.val分别按不同的大小放在相关的位置上,如图所示。E1.val图6.11盒子的语法制导安放产生式SBBB1B2BB1subB2Btext非终结符B(表示盒子)代表一个公式,产生式B→BB代表两个盒子并置,B→B1subB2代表B2的大小比B1的小,并且放在下角标的位置表6.8盒子大小和高度的属性文法语义规则B.ps:=10;S.ht:=B.htB1.ps:=B.ps;B2.ps:=B.ps;B.ht:=max(B1.h

10、t,B2.ht)B1.ps:=B.ps;B2.ps:=shrink(B.ps);B.ht:=disp(B1.ht,B2.ht)B.ht:=text.hB.ps使B2.ps减少30%把盒子B2向下放置继承属性ps影响公式的高度综合属性B.ht代表B的高度查表获得S{B.ps:=10}B{S.ht:=B.ht}B{B1.ps:=B.ps}B1{B2.ps:=B.ps}B

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

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

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