第4章语法制导的翻译编译原理中国科技大学(共13讲).ppt

第4章语法制导的翻译编译原理中国科技大学(共13讲).ppt

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

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4.4 L属性的自下而上计算 产 生 式 代 码 段 S ? LB val[top?1] = val[top] L ? ? val[top+1] = 10 B ? B1 MB2 val[top?2] = max(val[top?2], val[top]) M ? ? val[top+1] = val[top?1] B ? B1 sub NB2 val[top?3] = disp (val[top?3], val[top] ) N ? ? val[top+1] = shrink(val[top?2]) B ? text val[top] = val[top] ? val[top?1] 本 章 要 点 语义规则的两种描述方法:语法制导的定义和翻译方案 设计简单问题的语法制导定义和翻译方案,这是本章的重点和难点 语法制导定义和翻译方案的实现 S属性的自下而上计算(边分析边计算) L属性的自上而下计算(边分析边计算) L属性的自下而上计算(边分析边计算) 不再介绍先分析后计算的方法 不能边分析边计算的情况是存在的,见5.6节 例 题 1 下面是产生字母表? = {0, 1, 2}上数字串的一个 文法: S ? D S D | 2 D ? 0 | 1 写一个语法制导定义,判断它接受的句子是否为回文 数 S? ? S print(S.val) S ? D1 S1 D2 S.val = (D1.val == D2.val) and S1.val S ? 2 S.val = true D ? 0 D.val = 0 D ? 1 D.val = 1 例 题 2 为下面文法写一个语法制导的定义,用S的综合属性val 给出下面文法中S产生的二进制数的值。例如,输入 101.101时,S.val = 5.625(可以修改文法) 若按22+ 0 + 20 + 2-1 + 0 + 2-3来计算,该文法对小数点 左边部分的计算不利,因为需要继承属性来确定每个B 离开小数点的距离 S ? L . L | L L ? L B | B B ? 0 | 1 S . L L B L B B L L B L B B 例 题 2 为下面文法写一个语法制导的定义,用S的综合属性val 给出下面文法中S产生的二进制数的值。例如,输入 101.101时,S.val = 5.625(可以修改文法) 若小数点左边按(1 ? 2 + 0) ? 2 + 1计算。该办法不能 直接用于小数点右边,需改成((1 ? 2 + 0) ? 2 + 1)/23, 这时需要综合属性来统计B的个数 S ? L . L | L L ? L B | B B ? 0 | 1 S . L L B L B B L L B L B B 例 题 2 为下面文法写一个语法制导的定义,用S的综合属性val 给出下面文法中S产生的二进制数的值。例如,输入 101.101时,S.val = 5.625(可以修改文法) 更清楚的办法是将文法改成下面的形式 S ? L . R | L L ? L B | B R ? B R | B B ? 0 | 1 S . L L B L B B R R B R B B 例 题 2 S ? L . R S. val = L. val + R. val S ? L S. val = L. val L ? L1 B L. val = L1. val ?2 + B. val L ? B L. val = B. val R ? B R1 R. val = R1. val / 2 + B. val / 2 R ? B R. val = B. val / 2 B ? 0 B. val = 0 B ? 1 B. val = 1 例 题 3 给出把中缀表达式翻译成

文档评论(0)

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

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

1亿VIP精品文档

相关文档