- 1、本文档共67页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]chapter8new
产生式 L→L;S 改写为: L→L1; M S M→? 翻译方案: 引入L的属性L.nextlist 1. L→L1; M S { backpatch(L1.nextlist, M.quad); L.nextlist:=S.nextlist } 2. M→? { M.quad:=nextstat} 其它几个语句的翻译 1. S→begin L end { S.nextlist:=L.nextlist } 2. S→A { S.nextlist:=0 } 3. L→S { L.nextlist:=S.nextlist } 翻译语句 while (ab) do if (cd) then x:=y+z; E→id1 relop id2 { E.true:=nextstat; E.false:=nextstat+1 emit(‘if’ id 1.place ‘rop’ id 2.place ‘goto’ -); emit(‘goto’-) } A→id:=E { p:=lookup(id.name); if p?nil then emit(p ‘:=’ E.place) else error } E→E1+E2 { E.place:=newtemp; emit(E.place ‘:=’ E1.place ‘+’ E2.place)} S→if E then M S1 { backpatch(E.true, M.quad); S.nextlist:=merge(E.false, S1.nextlist) } M→? { M.quad:=nextstat } S→A { S.nextlist:=0 } 100: if ab goto – 101:goto – 102: if cd goto – 103: goto – 104: t=y+z 105: x:=t 100: if ab goto – 101:goto – 102: if cd goto 104 103: goto – 104: t=y+z 105: x:=t 翻译语句 while (ab) do if (cd) then x:=y+z; 100 if ab goto 102 (2) 101 goto 107 102 if cd goto 104 103 goto 100 (1) 104 t:=y+z 105 x:=t 106 goto 100 (4) 107 S→while M1 E do M2 S1 { backpatch(S1.nextlist, M1.quad); backpatch(E.true, M2.quad); S.nextlist:=E.false emit(‘goto’ M1.quad) } M→? { M.quad:=nextstat } * * 8.6 说明语句的翻译 相对地址举例 名字 相对地址 x 0 i 64 j 68 X[1] X[2] …… X[8] i j 0 8 56 64 68 begin real x[8]; integer i, j; …… end 8.6 说明语句的翻译 简单的说明语句的翻译(仅登记名字和类型) D→integer namelist | real namelist namelist→namelist, id | id 存在问题:对于形如real a,b,c形式的句子,只能在把所有的名字都归约成namelist后才能就D→integernamelist或D → realnamelist进行归约,这时才能知道每个名字的类型,但实际上这时所有的名字都已经被归约掉了,怎样才能保证扫描到某个名字时能登记属性呢? 8.6 说明语句的翻译 用自下而上翻译,文法改写: D→D1, id | integer id | real id 语句real a,b,c的归约顺序为 D D D 语义规则中只能使用本产生式中文法符号的属性 8.6 说明语句的翻译 (1)D→integer id {enter(id, int);
您可能关注的文档
- [工学]7章_统计物理初步.pdf
- [工学]7 单层工业厂房结构2.ppt
- [工学]7电力系统的无功功率平衡和电压调整.ppt
- [工学]7第七章 可编程中断控制器.ppt
- [工学]7第6章 单片机的定时计数器与串行接口.ppt
- [工学]8-4环路定理.ppt
- [工学]8 计算机控制系统设计与实现.ppt
- [工学]8-气体吸收复习+习题课.ppt
- [工学]80概率论与数理统计复习题.doc
- [工学]6第六章 导体和电气设备的原理与选择1.ppt
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)