




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章属性文法和语法制导翻译,内容,属性文法基于属性文法的处理方法S-属性文法的自下而上计算L-属性文法和自顶向下翻译自下而上计算继承属性,第六章属性文法和语法制导翻译,语义:一组规则,用它可以定义一个程序的意义。描述方法:自然语言描述:隐藏错误、二义性和不完整性形式描述:操作语义(PL/1)指称语义(ADA)代数语义(PASCAL)属性文法,语义分析的任务,语义检查例类型、运算、维数、越界语义处理例变量的存储分配例表达式的求值例语句的翻译(中间代码的生成)问题如何根据被识别出的语法单位进行语义处理?,章节目录,第六章属性文法和语法制导翻译,编译中的语义处理包括两个功能:(1)审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义。也称为静态语义分析或静态审查;(2)如果静态语义正确,则执行真正的翻译,即生成中间代码或生成实际的目标代码。以上工作普遍基于属性文法和语法制导翻译方法。,6.1属性文法,属性文法(也称属性翻译文法)Knuth在1968年提出在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的“值”(称为属性)。属性代表与文法符号相关信息,如类型、值、代码序列、符号表内容等属性可以进行计算和传递语义规则:对于文法的每个产生式都配备了一组属性的计算规则,6.1属性文法,属性综合属性:“自下而上”传递信息继承属性:“自上而下”传递信息在一个属性文法中,对应于每个产生式A都有一套与之相关联的语义规则,每条规则的形式为:b:=f(c1,c2,ck)这里,f是一个函数,而且或者1.b是A的一个综合属性并且c1,c2,ck是产生式右边文法符号的属性,或者2.b是产生式右边某个文法符号的一个继承属性并且c1,c2,ck是A或产生式右边任何文法符号的属性。在两种情况下,属性b依赖于属性c1,c2,ck。,6.1属性文法,说明终结符只有综合属性,由词法分析器提供非终结符既可有综合属性也可有继承属性,文法开始符号的所有继承属性作为属性计算前的初始值对出现在产生式右边的继承属性和出现在产生式左边的综合属性都必须提供一个计算规则。属性计算规则中只能使用相应产生式中的文法符号的属性出现在产生式左边的继承属性和出现在产生式右边的综合属性不由所给的产生式的属性计算规则进行计算,它们由其它产生式的属性规则计算或者由属性计算器的参数提供,6.1属性文法,语义规则所描述的工作可以包括属性计算、静态语义检查、符号表操作、代码生成等等。例,考虑非终结符A,B和C,其中,A有一个继承属性a和一个综合属性b,B有综合属性c,C有继承属性d。产生式ABC可能有规则C.d:=B.c+1A.b:=A.a+B.c而属性A.a和B.c在其它地方计算,属性文法的例子:简单算术表达式求值的语义描述。非终结符E、T及F都有一个综合属性val,符号digit有一个综合属性lexval,它的值由词法分析器提供。与产生式LE对应的语义规则仅仅是打印由E产生的算术表达式的值的一个过程,我们可认为这条规则定义了L的一个虚属性。某些非终结符加下标是为了区分一个产生式中同一非终结符多次出现,语义规则,LE,EE1+T,ET,TT1*F,TF,F(E),Fdigit,Print(E.val),E.val:=E1.val+T.val,E.val:=T.val,T.val:=T1.valF.val,T.val:=F.val,F.val:=E.val,F.val:=digit.lexval,产生式,6.1属性文法,综合属性在语法树中,一个结点的综合属性的值由其子结点的属性值确定。使用自底向上的方法在每一个结点处使用语义规则计算综合属性的值仅仅使用综合属性的属性文法称S属性文法结点属性值的计算正好和自底向上分析建立分析树结点同步进行。,属性文法举例简单计算器,用语义规则描述表达式求值该属性文法描述如下产生式语义规则(属性计算规则)LEnprint(E.val)(虚属性)EE1+TE.val:=E1.val+T.valETE.val:=T.valTT1*FT.val:=T1.val*F.valTFT.val:=F.valF(E)F.val:=E.valFiF.val:=i.lexval,非终结符设有综合属性,代表表达式的值,终结符i设有综合属性,其值由词法分析器提供,简单计算器的设计p138,例3*5+4n表达式的文法LEnEE1+TETTT1*FTFF(E)Fi,En,E1+T,T,T1*F,F,i3,i5,F,i4,要解决的问题表达式求值,.val3,.val3,.val5,.val15,.val15,.val4,.val4,.val19,L,显示19,.lexval3,.lexval5,.lexval4,综合属性自下而上传递信息,6.1属性文法,继承属性在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定用继承属性来表示程序设计语言结构中的上下文依赖关系很方便,DTLL.in:=T.typeTintT.type:=integerTrealT.type:=realLL1,idL1.in:=L.inaddtype(id.entry,L.in)Lidaddtype(id.entry,L.in)entry单词id的属性,id在符号表的入口addtype在符号表中为变量添加类型信息,用语义规则描述变量说明该属性文法描述如下产生式语义规则(属性计算规则),说明语句的属性文法,综合属性,继承属性,节目录,说明语句的设计,例realid1,id2,id3说明语句的文法DTLTintTrealLL1,idLid,D,TL,real,L1,id3,L2,id2,id1,要解决的问题记录标识符的类型类型信息传递,real,real,real,.typereal,.inreal,.inreal,.inreal,继承属性自上而下传递信息,类型描述,变量表,6.2基于属性文法的处理方法,语法制导翻译即基于属性文法的处理过程通常是这样的:对单词符号串进行语法分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灯光氛围课件教学
- 灞桥健康小知识培训课件
- 考点解析-苏科版八年级物理下册《力》专题训练试题(解析版)
- 解析卷-人教版八年级上册物理声现象《噪声的危害和控制》专项训练练习题(含答案解析)
- 滨州课件设计
- 滚涂机专业知识培训内容课件
- 达标测试人教版八年级上册物理声现象《声音的特性》同步测评试题
- 工程机械安全培训考试题及答案解析
- 证券从业资格考试z及答案解析
- 北京市专职安全员c证考试题库及答案解析
- 平凡心态面对挫折课件
- 幼儿园一日生活护理
- 2025年成考高起点语文真题含答案
- 地下管廊施工围挡与隔离方案
- 卵巢癌患者的心理护理
- 2025年智能家居市场用户体验研究可行性报告
- 2025年监狱系统面试模拟题及案例分析
- 调节阀基础知识培训课件
- HB20542-2018航空用高闪点溶剂型清洗剂规范
- 2025年第十七届广东省中学生天文知识竞赛试题(含答案)
- 【苏科版】八年级物理上下全册知识点
评论
0/150
提交评论