第4讲--属性文法.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文档。上传文档
查看更多
第4讲--属性文法,属性文法,铭文法杖洗属性,铭文法杖属性,谢孟媛初级文法讲义,谢孟媛中级文法讲义,谢孟媛高级文法讲义,谢孟媛文法讲义,中国第一部成文法,第一部成文法

§1. 属性文法 属性文法是在上下文无关文法的基础上为每个文法符号(终结符或非终结符)配备若干个相关的“值”(称为属性)。这些属性代表与文法符号相关的信息,例如它的类型、值、代码序列?、符号表内容等等。属性和变量一样,可以进行计算和传递。 属性一般分为两类: 综合属性:用于“自下而上”传递信息, 继承属性:用于“自上而下”传递信息。 属性加工的过程即是语义处理的过程,对于文法的每一个产生式都配备了一组属性的计算规则,称为语义规则。 属性的类型 综合属性: 在语法树中,一个结点的综合属性的值由其子结点的属性值确定。通常使用自底向上的方法在每一个结点处使用语义规则计算综合属性的值。仅仅使用综合属性的属性文法称S-属性文法。 继承属性: 在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定。可用继承属性来表示程序语言结构中的上下文依赖关系。 注意: (1)终结符只有综合属性,由词法分析器提供; (2)非终结符既可以有综合属性也可以有继承属性。文法开始符号的所有继承属性作为属性计算前的初始值。 在一个属性文法中,对应于每个产生式A??都有一套与之相关联的语义规则,每条语义规则的形式为: b:=f(c1,c2,…,ck) 其中f是一个函数,并且满足下面两种情况之一: (1)b是A的一个综合属性并且c1,c2,…ck是产生式右边文法符号的属性; (2)b是产生式右边某个文法符号的一个继承属性并且c1,c2,…ck是A或产生式右边任何文法符号的属性。 对这两种情况都称为属性b依赖于属性c1,c2,…,ck 语义规则 描述属性计算、静态语义检查、符号表操作、代码生成等。语义规则可能产生副作用(如产生代码),也可能不是变元的严格函数(即函数中还有其它没有列出的自变量如变量地址等),比如说某个规则可能给出可用的下一个数据单元的地址。这样的语义规则通常写成过程调用或过程段。 下表是一个台式计算器程序的属性文法。该计算器读入一个算术表达式,计算并打印它的值,每个输入行以n作为结束。 在这些语义规则中,一个整数综合属性val把每个非终结符E,T,F联系起来。记号digit具有综合属性lexval,其值由词法分析器提供。 §2. 基于属性文法的处理方法 对单词符号串进行语法分析,构造语法分析树,然后根据需要遍历语法树,并在语法树的各结点处按语义规则进行计算。 输入串?语法树?依赖图?语义规则计算次序 这种由源程序的语法结构所驱动的处理办法就是语法制导翻译。 语义规则的计算可能产生代码、在符号表中存放信息、给出错误信息或执行任何其它动作。 依赖图 语法树中结点属性之间的相互依赖关系用依赖图描述 为每一个包含过程调用的语义规则引入一个虚综合属性b,这样把每一个语义规则都写成 b:= f(c1,c2, …ck) 的形式。 依赖图是一个有向图,为每一个属性设置一个结点:如果属性b依赖属性c,则从属性c的结点有一条有向边连到属性b的结点。 依赖图的画法 例:属性 A.a:=f( X.x, Y.y ) 对应于产生式 A?XY 的语义规则。 在依赖图中有三个相关结点: A.a,X.x,Y.y。 由于A.a依赖于X.x, Y.y,所以有两条有向边从X.x到A.a,从Y.y连到A.a. 如果与产生式A?XY对应的语义规则还有: X.i:=g(A.a,Y.y) 图中再增加两条有向边:从A.a连到X.i,从Y.y连到X.i,因为X.i依赖于A.a和Y.y. [例]依赖图 当下面的产生式应用于语法树时,我们就像下图所示的那样把有向边加到依赖图中。 产生式 语义规则 E?E1+E2 E.val:=E1.val+E2.val [例]依赖图 因为产生式D?TL的语义规则L.in=T.type ,从代表T.type的结点4有一条边连到代表L.in的结点5; 因为产生式L?L1,id有语义规则L1.in=L.in,可知L1.in依赖于L.in,所以有两条向下的边分别进入结点7 和9。 良定义文法和属性的计算次序 定义:属性之间不存在循环依赖关系的属性文法。 一个有向非循环图的拓扑序是图中结点的任何顺序m1,m2, …mk,使得边必须是从序列中前面的结点指向后面的结点。也就是说,如果mi?mj是mi到mj的一条边,那么在序列中mi必须出现在mj之前

文档评论(0)

xiaolan118 + 关注
实名认证
文档贡献者

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档