- 1、本文档共110页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章语法制导地翻译
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 本 章 要 点 语义规则的两种描述方法:语法制导的定义和翻译方案 设计简单问题的语法制导定义和翻译方案,这是本章的重点和难点 语法制导定义和翻译方案的实现 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 给出把中缀表达式翻译成没有冗余括号的中 缀表达式的语法制导定义。例如,因为?和?是 左结合, ((a ? (b + c )) ? (d ))可以重写成a ? (b + c ) ? d 两种方法: 先把表达式的括号都去掉,然后在必要的地方再加括号 去掉表达式中的冗余括号,保留必要的括号 例 题 3 第一种方法 S? ? E print ( E. code ) E ? E1 + T if T. op == plus then E.code =E1.code||“+”||“(”||T.code||“)” else E. code = E1. code || “+” || T. code; E. op = plus E ? T E. code
您可能关注的文档
- 第五章放大电路的频率特性1.ppt
- 第五章汽车碰撞事故参数地不确定性方法.ppt
- 第五章学习目标的阐明和目标测试题的编制(北师).ppt
- 第五章结构化查语言SQL.ppt
- 第五章规划生涯开未来第二节积极准备理性求职1.ppt
- 第五章酸碱平衡7.ppt
- 第五讲 国际法上地居民.ppt
- 第五节海水资源的开发利用环境保护与绿色化学9.ppt
- 第八章 东半球其他的国家与地区 中东.doc
- 第八章 其它电探方法x9.ppt
- DeepSeek培训课件入门宝典:第2册 开发实战篇 .pptx
- 全面认识全过程人民民主-2024春形势与政策课件.pptx
- 2024春形势与政策-全面认识全过程人民民主.pptx
- 2025年春季学期形势与政策第二讲-中国经济行稳致远讲稿.docx
- 2024春形势与政策-铸牢中华民族共同体意识课件.pdf
- 2024春形势与政策-走好新时代科技自立自强之路课件 (2).pptx
- 2024春形势与政策-走好新时代科技自立自强之路课件.pptx
- 形势与政策学习指导教学-整套课件.pdf
- 2023年春季形势与政策讲稿第三讲-开创高质量发展新局面.pdf
- DeepSeek培训课件-清华大学-DeepSeek模型本地部署与应用构建.pptx
文档评论(0)