网站大量收购闲置独家精品文档,联系QQ:2885784924

第六章——属性文法与语法制导翻译.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章——属性文法与语法制导翻译

第六章 属性文法和语法制导翻译;语义分析的功能;; 对一个属性文法,每个产生式A→α都有一套与之相关的语义规则,每条规则的形式为: b := f ( c1,c2,...,ck ) 其中:f是一个函数,而且: 或者(1)b是A的一个综合属性且c1,c2,...,ck是产生式右边文法符号的属性; 或者(2)b是产生式右部某个文法符号的一个继承属性并且c1,c2,...,ck是A或产生式右部任何文法符号的属性。 这两种情况均称属性b依赖于属性c1,c2,...,ck。;;;一个简单台式计算器的语法制导定义;语法制导翻译实现;依赖图;带有继承属性L.in的语法树;Real id1,id2,id3分析树的依赖图;Real id1,id2,id3分析树的依赖图;属性的计算顺序;属性计算方法;对无循环的属性文法进行属性计算的算法;例:;属性计算;属性计算方法;抽象语法树;如何建立表达式的抽象语法树;如表达式a-4+c的抽象语法树:;建立抽象语法树的语义规则;id;S—属性文法的自下而上计算;用LR分析器实现台式计算器;;状态;L-属性文法和自顶向下翻译;翻译模式(Translation Schemes);例(中缀表达式翻译成相应的后缀表达式) E→TR R→addop T {print(addop. Lexeme)} R1|ε T→num {print(num.val)} 输入串9-5 + 2的语法树,每个语义动作都作为相应产生式左部符号的结点的儿子,按深度优先次序执行图中的动作后,打印输出95-2+。;建立翻译模式:;自顶向下翻译;例:E?E1+T {E.nptr:=mknode(‘+’,E1.nptr,T.nptr)} E ? E1-T {E.nptr:=mknode(‘-’,E1.nptr,T.nptr)} E ? T {E.nptr:=T.nptr} 转换成翻译模式: E ?T{R.i :=T.nptr} R{E.nptr :=R.s} R ?+T{R1.i := mknode(‘+’, R.i,T.nptr)} R1{R.s := R1.s} R ?-T{R1.i := mknode(‘-’, R.i,T.nptr)} R1{R.s := R1.s} R ?ε {R.s :=R.i} ; 自下而上计算继承属性 ;例:E→TR R→+ T {print(‘+’)} R | - T {print(‘-’)} R |ε T→num {print(num.val)} 可使用标记非终结符M和N转换为: E→TR R→+ T MR | - TNR |ε T→num {print(num.val)} M ?ε {print(‘+’)} N ?ε {print(‘-’)} ;分析栈中的继承属性;;回顾Real id1,id2,id3分析树的依赖图;输入串real Real id1,id2,id3的分析过程 当L的右??被归约时,T恰好在这个右部的下面;; 用综合属性代替继承属性;一个解决的方法是重新构造文法

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档