属性文法与语法制导翻译课件.pptxVIP

属性文法与语法制导翻译课件.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  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文档。上传文档
查看更多
属性文法与语法制导翻译**主要内容语法制导翻译概述属性文法综合属性与继承属性S_属性文法L_属性文法翻译模式**6.1 语法制导翻译概述语法制导翻译的概念描述在进行语法分析的同时,完成相应的语义处理E→E1 + E2 E.val:=E1.val+E2.val语法结构具有规定的语义??如何根据被识别出的语法成分进行语义处理**1. 语义分析的任务**语义检查例如:类型、运算、维数、越界语义处理例如:变量的存储分配、表达式的求值、语句的翻译(中间代码的生成)总目标生成等价的中间代码2. 代码结构朴素理解:我们编写的程序在如何工作?计算学科:对信息(数据表示)描述和变换算法的系统研究变换:源、目标以及源与目标的对应关系语句的代码结构(源、目标)语句分类说明语句——符号表的查填可执行语句——生成指令代码**3. 典型处理方法对应每一个产生式编制一个语义子程序,当一个产生式获得匹配时,调用相应的语义子程序实现语义检查与翻译E→E1 + T E.val:=E1.val+T.valT→T1 * F T.val:=T1.val*F.valF →id F.val:=id.val适应在完成归约的时候进行语义——可以看成是相应文法符号的属性**3. 典型处理方法在产生式的右部的适当位置,插入相应的语义动作,按照分析的进程,执行遇到的语义动作D → T { L.in := T.type } LT → int { T.type := integer }T → real { T.type := real }L → { L1.in := L.in }L1,id{…}语义——可以看成是相应文法符号的属性适应在进行推导时完成对应语法基本分析方法(Top-down、Bottom-up)**6.2 属性(Attribute)文法**属性文法是Knuth在1968年提出的属性文法的特点是一种接近形式化的语义描述方法长于描述静态语义、短于描述动态语义每个语法符号有相应的属性符号每个产生式有相应的计算属性的规则属性变量:=属性表达式属性文法举例产生式 属性(计算)规则/语义规则E → E1 + E2 E.val := E1.val + E2.valE → E1 * E2 E.val := E1.val * E2.valE →(E1)E.val := E1.valE →idE.val := id .val**1. 属性文法的定义三元组:A=(G,V,F)G 是上下文无关文法V 属性的有穷集F 关于属性的计算规则属性及其计算规则语义信息作为终结符和非终结符的属性语义分析为产生式相关的属性计算:每个产生式设置语义规则,描述各属性的关系——计算规则**2. 属性的设定根据文法符号的语义,为文法符号设置属性,用来表示文法符号的语义终结符使用单词的属性 (id.val)保留字:if, begin, function,……常数:40.12, 232, 80, “TCP/IP”标识符:sum, tcc, id 语法变量根据实际需要设定属性表达式E:E.type, E.val**例6-1 计算器的属性文法用文法描述要完成的动作L → EE → E1 + T | TT → T1 * F | FF → ( E ) | digit任务:完成一个输入表达式值的计算和显示——翻译??如何描述翻译过程**例6-1 计算器的属性文法(续)L → E print( E.val )(L的虚属性)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 → digit F.val := digit.lexvallexval 是单词 digit 的属性**real operand,text,sumint add, sub,mult例6-2 说明语句的属性文法说明语句的文法D → T LT → intT → realL → L1,idL → id要解决的问题:纪录标识符的类型类型信息传递方法:用T.type记录类型信息,并传给L.in**例6-2 说明语句的属性文法D → T L L.in := T.typeT → int T.type := ‘integer’T → real T.type := ‘real’L → L1,id L1.in := L.in addtype( id.entry, L.in )L → id addtype( id.entry, L.in )entry单词 id 的属性addtype 在符号表中为变量填加类型信息**3. 属性分类属性的计算

文档评论(0)

子不语 + 关注
官方认证
服务提供商

平安喜乐网络服务,专业制作各类课件,总结,范文等文档,在能力范围内尽量做到有求必应,感谢

认证主体菏泽喜乐网络科技有限公司
IP属地未知
统一社会信用代码/组织机构代码
91371726MA7HJ4DL48

1亿VIP精品文档

相关文档