cmpl_07old.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cmpl_07old

语义分析和中间代码生成 第七章 语义分析和中间代码产生 内容: 将属性文法和语法制导翻译技术应用于语义分析和中间代码产生。 任务:1.静态语义检查: 类型检查,控制流检查,一致性检查, 相关名字检查, 作用域分析等。 2.翻译:产生中间代码,优化。 地位: §7.1中间语言 7.1.1后缀式(逆波兰式) 1.定义 (1)如果E是一个常量或变量,则E的后缀式是E自身。 (2)如果E是E1 op E2形式的表达式,则E的后缀式是 E1‘E2‘op,这里E1‘E2‘是E1、E2的后缀式。 2.例:(a+b)*(c+d)的后缀式是:ab+cd+* 3.把表达式翻译成后缀式的属性文法 7.1.2图表示法 包括DAG与抽象语法树(AST)。 1. 无循环有向图( DAG—Directed Acyclic Gragh) DAG 与 AST的区别是DAG可以有公共子表达式(结点可有多个父结点)。 例:表达式 a:=b*(-c)+b*(-c)的AST和DAG图及三地址码 T1:=-c := := T1:=-c T2:=b*T1 / \ / \ T2:=b*T1 T3:=-c a +T5 a +T3 T3:=T2+T2 T4:=b*T3 / \ ( ) a:=T3 T5:=T2+T4 *T2 *T4 *T2 a:=T5 / \ / \ / \ b T1 b T3 b T1 | | | - c -c - c 7.1.2图表示法(2) 2. 产生建立赋值语句抽象语法树的属性文法 产生式 语义规则 S →id:=E S.nptr:=mknode(‘assign”,mkleaf(id.id.place),E.nptr) E →E1+E2 E.nptr:=mknode(‘+’, E1.nptr, E2.nptr) E →E1* E2 E.nptr:=mknode(‘*’, E1.nptr, E2.nptr) E →-E1 E.nptr:=mknode(‘uminus’,E1.nptr) E →(E1) E.nptr:= E1.nptr E →id E.nptr:=mkleaf(id,id.place) 7.1.2图表示法(3) 例 表达式a:=b*-c+b*-c的抽象语法树的表示: 7.1.3三地址代码(1) 一般形式 : (1) x:=y op z (2) x:=op z (3) x:=y (4) goto L (5) if x relop y goto L 或 if x goto L (6) param x call p,n return y (7) x:=y[i], x[i]:=y (8) x:=y, x:=*y, *x:=y 例:表达式a:=b*

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档