编译6属性文法和语法制导翻译(zss)

编译6属性文法和语法制导翻译(zss)

ID:20333795

大小:1.53 MB

页数:76页

时间:2018-10-11

编译6属性文法和语法制导翻译(zss)_第1页
编译6属性文法和语法制导翻译(zss)_第2页
编译6属性文法和语法制导翻译(zss)_第3页
编译6属性文法和语法制导翻译(zss)_第4页
编译6属性文法和语法制导翻译(zss)_第5页
资源描述:

《编译6属性文法和语法制导翻译(zss)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理(第三版)陈火旺等编著(2012年9月-12月)主讲:朱世松计算机学院22021/10/7第六章属性文法和语法制导翻译属性属性常用来描述事物或人的特征。如:人的姓名,性别等,商品的颜色、重量、单位等。32021/10/76.1属性文法属性文法(也称属性翻译文法)Knuth在1968年提出在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的“值”(称为属性)。属性代表与文法符号相关信息,如类型、值、代码序列、符号表内容等属性可以进行计算和传递语义规则:对于文法的每个产生式都配备

2、了一组属性的计算规则42021/10/7属性综合属性:“自下而上”传递信息继承属性:“自上而下”传递信息在一个属性文法中,对应于每个产生式A→都有一套与之相关联的语义规则,每条规则的形式为:b:=f(c1,c2,…,ck)这里,f是一个函数,而且或者1.b是A的一个综合属性并且c1,c2,…,ck是产生式右边文法符号的属性,或者2.b是产生式右边某个文法符号的一个继承属性并且c1,c2,…,ck是A或产生式右边任何文法符号的属性。属性b依赖于属性c1,c2,…,ck。52021/10/7说明终结符只有综

3、合属性,由词法分析器提供非终结符既可有综合属性也可有继承属性,文法开始符号的所有继承属性作为属性计算前的初始值对出现在产生式右边的继承属性和出现在产生式左边的综合属性都必须提供一个计算规则。属性计算规则中只能使用相应产生式中的文法符号的属性62021/10/7语义规则所描述的工作可以包括:属性计算、静态语义检查、符号表操作、代码生成等等。例,考虑非终结符A,B和C,其中,A有一个继承属性a和一个综合属性b,B有综合属性c,C有继承属性d。产生式A→BC可能有规则C.d:=B.c+1A.b:=A.a+B.c

4、而属性A.a和B.c在其它地方计算72021/10/7产生式L→EnE→E1+TE→TT→T1*FT→FF→(E)F→digit语义规则print(E.val)E.val:=E1.val+T.valE.val:=T.valT.val:=T1.val*F.valT.val:=F.valF.val:=E.valF.val:=digit.lexval表6.182021/10/7综合属性在语法树中,一个结点的综合属性的值由其子结点的属性值确定。使用自底向上的方法在每一个结点处使用语义规则计算综合属性的值仅仅使用综

5、合属性的属性文法称S-属性文法92021/10/7产生式L→EnE→E1+TE→TT→T1*FT→FF→(E)F→digit语义规则print(E.val)E.val:=E1.val+T.valE.val:=T.valT.val:=T1.val*F.valT.val:=F.valF.val:=E.valF.val:=digit.lexval102021/10/73*5+4n的带注释的语法树digit.lexval=3F.val=3T.val=3*digit.lexval=5F.val=5T.val=15E

6、.val=15+digit.lexval=4F.val=4T.val=4E.val=19nL产生式语义规则L→Enprint(E.val)E→E1+TE.val:=E1.val+T.valE→TE.val:=T.valT→T1*FT.val:=T1.val*F.valT→FT.val:=F.valF→(E)F.val:=E.valF→digitF.val:=digit.lexval112021/10/7继承属性在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定用继承属性来表示程序设

7、计语言结构中的上下文依赖关系很方便122021/10/7产生式语义规则D→TLL.in:=T.typeT→intT.type:=integerT→realT.type:=realL→L1,idL1.in:=L.inaddtype(id.entry,L.in)L→idaddtype(id.entry,L.in)132021/10/7句子realid1,id2,id3的带注释的语法树id1L,id2L,id3LrealTDT.type=realL.in=realL.in=realL.in=real产生式语义规

8、则D→TLL.in:=T.typeT→intT.type:=integerT→realT.type:=realL→L1,idL1.in:=L.inaddtype(id.entry,L.in)L→idaddtype(id.entry,L.in)142021/10/76.2基于属性文法的的处理方法由源程序的语法结构所驱动的处理办法就是语法制导翻译法语义规则的计算产生代码在符号表中存放信息给出错误信息执行任何其它动作对输入符号串的翻

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

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

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