ch05_语法制导翻译技术.ppt

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

第5章 语法制导翻译技术;语法制导翻译技术;语法制导翻译技术;5.1 语法制导定义及翻译方案;内容安排;一、语法制导定义;语义规则;简单算术表达式求值的语法制导定义;综合属性;3*5+4n的分析树加注释的过程;继承属性;一个带有继承属性L.in的语法制导定义;语句real id1,id2,id3的分析树加注释;二、依赖图;算法5.1 构造依赖图;依赖图构造举例;三、计算次序;计算顺序;语法制导翻译过程;四、L属性定义和L属性定义;例:非L属性定义的 语法制导定义;属性计算顺序——深度优先遍历分析树;五、翻译方案;例:一个简单的翻译方案 E?TR R?addop T { print(addop.lexeme)} R1 | ? T?num { print(num.val) };翻译方案的设计;为L属性定义设计翻译方案的原则;例:考虑如下翻译方案 S?A1A2 {A1.in=1;A2.in=2} A?a {print(A.in)};例:为如下L属性定义设计翻译方案;把语义规则插入到产生式??适当的位置;5.2 S-属性定义的自底向上翻译;一、语法树;语法树示例;二、构造表达式的语法树;构造函数;建立表达式a-4+c的语法树;三、构造表达式语法树的语法制导定义;构造表达式语法树的语法制导定义 ;表达式a-4+c的语法树的构造;四、表达式的有向非循环图(dag);为表达式 a+a*(b-c)+(b-c)*d 构造dag;五、S-属性定义的自底向上实现;扩充分析栈;修改分析程序;例:用LR分析程序实现表达式求值;对 3*5+4n 进行分析的动作序列;步骤 输入 分析栈 分析动作 (8) +4n state: 0 2 val: - 15 归约,用E?T (9) +4n state: 0 1 val: - 15 移进 (10) 4n state: 0 1 6 val: - 15 - 移进 (11) n state: 0 1 6 5 val: - 15 - 4 归约,用F?digit (12) n state: 0 1 6 3 val: - 15 - 4 归约,用T?F (13) n state: 0 1 6 9 val: - 15 - 4 归约,用E?E+T (14) n state: 0 1 val: - 19 接受 ;5.3 L-属性定义的自顶向下翻译;一、消除翻译方案中的左递归;R1 .i的语义规则为:R1.i=R.i+T.val R.s的语义规则为:R.s=R1.s 于是得到: (3?) R?+T {R1.i=R.i+T.val} R1 {R.s=R1.s} 同样可得到: (2?) R?-T {R1.i=R.i-T.val} R1 {R.s=R1.s};翻译方案;消除翻译方案中左递归的一般方法;例:考虑建立表达式语法树的语法制导定义;构造表达式语法树的翻译方案;使用继承属性构造 a-4+c 的语法树;二、预测翻译程序的设计;按照从左到右的顺序考虑产生式右部的记号、非终结符号和语义动作 对带有综合属性x的记号X 把属性x的值保存于为X.x声明的变量中 产生一个匹配记号X的调用 推进扫描指针 对非终结符号B 产生一个函数调用语句c=B(b1,b2,…,bk) bi(i=1,2,…,k)是对应于B的继承属性的变量 c是对应于B的综合属性的变量 对每一个语义动作 把动作代码复制到分析程序中 用代表属性的变量代替翻译方案中引用的属性;例:为构造表达式语法树的翻译方案 构造翻译程序;与R?addopTR|? 相应的分析过程;实现翻译方案的函数;5.4 L属性定义的自底向上翻译;一、从翻译方案中去掉嵌入的动作;例:去掉如下翻译方案中嵌入的动作: E?TR R?+T {print(?+?)} R |-T {print(?-?)} R | ? T?num {print(num.val)};变换前、

文档评论(0)

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

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

1亿VIP精品文档

相关文档