编译原理复习资料.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文档。上传文档
查看更多
基本块的划分、基本块的优化 1.基本块的划分 read(n) i=1 FEN=1 L1:if i=N goto L2 goto L3 L2:T1=FEN*i FEN=T1 i= i+1 goto L1 L3:write(FEN) B1 B2 B3 B4 B5 基本块的划分、基本块的优化(续) S0=2 S1=3/S0 S2=T-C S3=T+C R=S0/S3 H=R S4=3/S1 S5=T+C S6=S4/S5 H=S6*S2 ⑴应用DAG对该基本块进行优化; ⑵假定只有R、H在基本块出口是活跃的,试写出优化后的四元式代码。 n1 S0 2 n2 S1 1.5 n4 n3 n5 n6 n8 n7 S2 T C S3 R H ,S4 ,S5 ,H ,S6 * / - + 基本块的划分、基本块的优化(续) S0=2 S4=2 S1=1.5 S2=T-C S3=T+C S5=S3 R=2/S3 S6=R H=R*S2 n1 S0 2 n2 S1 1.5 n4 n3 n5 n6 n8 n7 S2 T C S3 R H ,S4 ,S5 ,S6 * / - + 程序流图、必经结点集、回边、循环 求右图所示流图中的循环。 1.各结点的必经结点集分别为: D(n0)={n0} D(n1)={n0,n1 } D(n2)={n0,n1,n2 } D(n3)={n0,n1,n3 } D(n4)={n0,n1,n3,n4 } D(n5)={n0,n1,n3,n5 } D(n6)={n0,n1,n3,n6 } D(n7)={n0,n1,n3,n6 ,n7} 2. ∵n1 DOM n6 ∴n6→n1是一条回边。 3.该回边所表示的循环为{n1,n2,n3,n4,,n5,n6 }。 n2 n7 n6 n0 n3 n4 n5 n1 词法分析程序的自动生成工具LEX简介(续) 1.辅助定义部分    这部分是为了给用户在后面的使用中提供方便而设计的,如为一个复杂的正规式定义一个名字,定义的格式为       名字  正规式 例如,将标识符(字母开头的字母数字串)的正规式[a-zA-Z][a-zA-Z0-9]*定义为名字id、无符号整常数(数字串)的正规式[0-9][0-9]*定义为名字number,则可以给出以下辅助定义:     id [a-zA-Z][a-zA-Z0-9]*    number [0-9][0-9]*    正规式被定义后,在后面的识别规则中就可以用名字替代这个正规式了,其使用方法是用“{}”将名字括起来,如{id},这样LEX就会自动用已定义的正规式去解释id。 词法分析程序的自动生成工具LEX简介(续) 2.识别规则部分    这部分是一串如下形式的LEX语句:      P1 {A1} P2 {A2} …… Pn {An}    其中:  ⑴每一个Pi都是一个正规式,定义了一种单词的词形。  ⑵每一个Ai是配备给Pi的一小段程序代码,指出了即将生成的词法分析程序在识别了Pi所定义的单词之后需要做的“动作”,例如向语法分析程序返回该单词的机内码。    事实上,LEX语言并不是一个完整的语言,它只是某种程序设计语言的扩充,这种程序设计语言也称做宿主语言,LEX本身没有描述“动作”的语句,“动作”的描述是由宿主语言完成的,例如,宿主语言是C语言,则每个Ai就是一段C语言程序。 词法分析程序的自动生成工具LEX简介(续) 3.用户子程序部分    当词法分析程序对源程序完成扫描时,用户可能希望词法分析程序再做某些工作,如输出表格、输出统计结果等,这时,用户就可以编写一个子程序,并将该子程序放在这里。    若用户对A语言编写了以上格式的LEX源程序,则LEX编译程序会根据其中每个Pi的定义,自动构造出识别这些单词的C程序段,并将其与相应的Ai相结合,最后结合上“用户子程序”就形成了一个完整的C语言程序,这个C语言程序也就是A语言的词法分析程序。 语法分析器自动生成工具YACC简介 YACC(Yet Another Compiler_Compiler)是一个已被广泛使用的语法分析程序的自动生成工具。 YACC的输入是某种语言的语法描述,输出是该语言的语法分析程序。假定要生成A语言的语法分析程序,则YACC、A语言语法分析器的关系如下图所示: YACC A语言语法分析器 yy

文档评论(0)

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

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

1亿VIP精品文档

相关文档