- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、设计S-for(i=e1,ie2,e3) S语句的翻译模式 2、写出下面句子 ab and cd or ef 的语义分析结果 If ab and cd or efthen x=0 else x=1 例过程调用“call i(a+b, c)” 代码 如下: t:= a+b/*计算a+b置于单元t中 */ param t /* 第一个实参地址*/ param c /*第二个实参地址*/ call I.place, 2 /*调用过程i */ 语法制导翻译: 1.S→call id (Elist) { 求Elist的代码 for each item p on queue do emit(param p); emit(call id.place)} 2. Elist→Elist,E { 将E.place加入到queue的队尾} 3. Elist→E {初始化queue仅包含E.place} 总结: 1、中间代码 :三地址码 2、说明语句: 局部数据和非局部数据的访问 3、可执行语句 简单赋值和复杂赋值 布尔表达式 控制语句 回填 作业: 1、设计S-For i=e1 to e2 do S1 S语句的翻译模式 2、设计S-repeat S until E语句的翻译模式 7.使用一遍扫描的布尔表达式的翻译模式 1 E?E1 OR ME2 {backpatch(M.falselist,M.quad); E.truelist:=merge(M.truelist,E2.truelist); E.falselist:=E2.falselist } M ? ? {M.quad:=nextquad M.truelist=E.truelist M.falselist=E.falselist } 3 E?not E1 { E.truelist:=E1.falselist; E.falselist:=E1.truelist } 4 E ?( E ) {E.truelist:= E1.truelist; E.falselist:=E1.falselist} 2 E?E1 AND ME2 {backpatch(M.truelist,M.quad); E.truelist:=E2.truelist; E.falselist:=merge(M.falselist,E2.falselist);} 6 E ?true {E.truelist:= makelist(nextquad); emit(′goto—′); } 7 E ?false {E.falselist:= makelist(nextquad); emit(′goto—′); } 5 E ?id1 relop id2 {E.truelist:= makelist(nextquad); E.falselist:= makelist(nextquad+1); emit(′if′id1.place relop.op id2.place′goto—′); emit(′goto—′); } E ② ab Cd Ef 重新考虑表达式a<b and c<d and e<f 一棵作了注释的分析树如下图所示 ε ε E1 and M E2 E12 and ② M E22 ⑤ ⑧ ⑤ ⑧ ⑤ 语义动作执行顺序: ⑤⑧⑤②⑧⑤② K: K+1: (J,a,b, ) (j, , , ) M.quad:= k+2 M.truelist=K M.falselist=k
文档评论(0)