第六章_属性文法和语法制导翻译1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章_属性文法和语法制导翻译1,语法制导翻译,语法制导,语法制导定义,文法语法,文法和语法,奇迹暖暖第六章属性,属性文法,属性语法,铭文法杖洗属性

第六章 属性文法和语法制导翻译 内容 属性文法 基于属性文法的处理方法 S-属性文法的自下而上计算 L-属性文法和自顶向下翻译 自下而上计算继承属性 第六章 属性文法和语法制导翻译 语义:一组规则,用它可以定义一个程序的意义。 描述方法: 自然语言描述:隐藏错误、二义性和不完整性 形式描述: 操作语义(PL/1) 指称语义(ADA) 代数语义(PASCAL) 属性文法D 语义分析的任务 语义检查 例 类型、运算、维数、越界 语义处理 例 变量的存储分配 例 表达式的求值 例 语句的翻译(中间代码的生成) 问题 如何根据被识别出的语法单位进行语义处理? 第六章 属性文法和语法制导翻译 编译中的语义处理包括两个功能: (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。产生式A→BC可能有规则 C.d:=B.c+1 A.b:=A.a+B.c 而属性A.a和B.c在其它地方计算 属性文法的例子:简单算术表达式求值的语义描述。 非终结符E、T及F都有一个综合属性val, 符号digit有一个综合属性lexval,它的值由词法分析器提供。 与产生式L→E对应的语义规则仅仅是打印由E产生的算术表达式的值的一个过程,我们可认为这条规则定义了L的一个虚属性。 某些非终结符加下标是为了区分一个产生式中同一非终结符多次出现 6.1 属性文法 综合属性 在语法树中,一个结点的综合属性的值由其子结点的属性值确定。 使用自底向上的方法在每一个结点处使用语义规则计算综合属性的值 仅仅使用综合属性的属性文法称S-属性文法 结点属性值的计算正好和自底向上分析建立分析树结点同步进行。 属性文法举例——简单计算器 用语义规则描述表达式求值 该属性文法描述如下 产生式 语义规则(属性计算规则) L→En print( E .val ) (虚属性) E→E1+T E.val:=E1.val+T.val E→T E.val:=T.val T→T1*F T.val:=T1.val*F.val T→F T.val:=F.val F→(E) F.val:=E.val F→i F.val:=i.lexval 简单计算器的设计 p138 例 3*5+4n 表达式的文法 L→En E→E1+T E→T T→T1*F T→F F→(E) F→i 6.1 属性文法 继承属性 在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定 用继承属性来表示程序设计语言结构中的上下文依赖关系很方便 说明语句的设计 例 real id1,id2,id3 说明语句的文法 D → T L T → int T → real L

文档评论(0)

ajgoaw + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档