属性文法和语法制导翻译.pptxVIP

  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页/共43页6.1 语法制导翻译概述 一、语法制导翻译的概念1、定义 在语法分析过程中根据各个规则所相联的语义动作或所对应的语义子程序进行翻译的办法。 2、要求 语法结构具有规定的语义。 3、本质 在进行语法分析的同时,完成相应的语义处理,关键是如何根据被识别出的语法成分进行语义处理。 第2页/共43页4、语义分析的任务 1)静态语义检查。例:类型、运算、维数、越界。 2)动态语义处理(真正的翻译)。 例:变量的存储分配、表达式的求值、语句的翻译(中间代码的生成)。 总目标: 生成等价的中间代码/目标代码。 5、处理方法 1)对应每一个文法规则编制一个语义子程序,当一个规则 获得匹配时,调用相应的语义子程序实现语义检查与翻译。 2)在文法规则的右部适当位置,插入相应的语义动作,按照分析的进程,执行遇到的语义动作。 注意: 语义—可以看成是相应文法符号的属性。 第3页/共43页二、语法制导翻译的具体实现途径 使用LR分析器实现。通过对符号栈加上语义,扩充LR分析器的分析能力,使它在用某个文法规则进行归约的同时,调用相应的语义子程序或产生某种中间代码形式。 第4页/共43页 属性文法一、概述 1、现代编译系统多采用语法制导翻译方法,该方法使用属性文法为工具来说明程序设计语言的语义。 2、属性文法最最由克努特(D.E.Knuth)在1968年提出的,他把属性分成:继承属性、综合属性3、属性文法的特点 1)是一种接近形式化的语义描述方法; 2)每个语法符号有相应的属性符号; 3)每个文法规则都有相应的计算属性的规则:属性变量:=属性表达式。 第5页/共43页4、例子 规则 属性(计算)规则/语义规则E → E1 + E2 E → E1 * E2E →(E1)E →idE.val := id .val二、属性文法的定义属性,常用以描述事物或人的特征、性质、品质等,对编译程序使用的语法树的结点,可以用类型、值或存储位置来描述它1、定义为三元组A=(G,V,F)。 其中:G是上下文无关文法;V是属性的有穷集;F是关于属性的谓词/断言,充当计算规则。说明:任何布尔表达式都是谓词。 第6页/共43页例如文法G为:E T1+T2| T1 or T2T num| true |false 对输入串3+4的语法树如图:第7页/共43页属性文法记号中常使用N·t的形式表示与非终结符N相联 的属性t比如可把完成对上面表达式的类型检查的属性文法写成 图的形式:第8页/共43页2、属性(语义信息)与终结符或非终结符相联;谓词与文法规则相联。 3、静态语义审查即验证关于所编译源程序的谓词是否全为真。可用带语义信息结点的语法树来表示与输入串对应语法树的静态语义审查。 三、用法1、根据文法符号的语义,为文法符号设置属性。 2、为每个文法规则设置语义规则(用于描述各属性的关 系——计算规则) 3、两种使用形式: (1)用于语法制导定义:语义的抽象说明。 (2)用于翻译模式的定义:规定实现方法(计算次序)。 第9页/共43页例1:计算器的设计。 对下列文法: L → E E → E1 + T | T T → T1 * F | F F → ( E ) | digit 用属性文法描述语法制导的翻译过程如下:L → E print( E.val )(虚属性)E → E1 + T E.val := E1.val + 第10页/共43页其中,lexval 是单词 digit 的属性例2:说明语句的设计。C语言中整型和实型变量说明语句的文法: D → T L T → int T → real L → L1,id L → id (1)要解决的问题:记录标识符的类型、类型信息的传递、说明语句类型信息传递的实现。 (2)方法:编写说明语句的文法,将类型信息作为类型描述对应非终结符T的属性type和变量表对应非终结符L的属性in。 (3)目的:分析说明语句D,为变量指定类型。 (4)属性文法的实现: 第11页/共43页T → int T.type := ‘integer’T → real T.type := ‘real’ addtype( id.entry, L.in )L → id addtype( id.entry, L.in )其中,entry 为单词 id 的属性;addtype 表示在符号表中为变量填加类型信息。第12页/共43页四、属性分类1、综合属性 设 A→X1X2…Xn 为一个文法规则,则A.s=f(c1,c2,…,ck)中,c1,c2,…,ck表示X1,X2,…,Xn的属性。而是从其右部符号的属性值计算出来的,如:例中的 、。即左部非终结符的属性值的计算来自其

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档