编译原理课件讲义.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 按照红色文字修改教材相应内容 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 注意:红色文字是应该增加的,否则U为空时,其中的操作无意义! * * 试将函数直接写为递归的 * * * * 强调红色转移:变为代表状态上的环。 * * 考察当前划分的每组时:沿纵向观察状态转移,比较直观 * 4. 这里的思路:写出状态转移-用定义形式,或者用矩阵形式;然后将同组中其他状态替换为代表;最后删除重复的转移。 其他思路:根据最终划分和原DFA状态转移,重新绘制状态转换图。 5 得到DFA转移函数定义后,构造状态图,以直观地找到死状态和不可达状态,以删除之。这个例子没有这两类状态。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 请同学们自己计算识别过程(∵与上页同理) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 再考虑布尔表达式ab or cd and ef (6) E→id1 relop id2 {E.tc:=mkchain(nextstat); E.fc:=mkchain(nextstat+1); emit(if id1.place relop.op id2.place goto -); emit(goto -); } 设nextstat初始为1 (1) if ab goto - (2) goto - (3) if cd goto - (4) goto - (5) if ef goto - (6) goto - (1)M→ε{M.stat:=nextstat;} E4→E2 and M2 E3 { backpatch(E2.tc, M2.stat); E4.fc:=merge(E2.fc, E3.fc); E4.tc:=E3.tc;} 5 E5→E1 or M1 E4 { backpatch(E1.fc, M1.stat); E5.tc:=merge(E1.tc, E4.tc); E5.fc:=E4.fc;} 3 * 再考虑布尔表达式ab or cd and ef(续) 对照: if ab goto LT goto L2 L2: if cd goto L1 goto LF L1: if ef goto LT goto LF 序号 产生式 三地址码 (1) E1→ab (1) if ab goto - (2) goto 3 (2) M1→ε (3) E2→cd (3) if cd goto 5 (4) goto - (4) M2→ε (5) E3→ef (5) if ef goto - (6) goto - (6) E4→E2 and M2 E3 (7) E5→E1 or M1 E4 其中:E5.tc=(5,1) E5.fc=(6,4) * 4.9 控制语句 四类控制语句: 无条件转移:goto L(转向标号L 所指示位置) exit、break(退出某个范围) 条件转移: if 布尔表达式 then ¨¨ else ¨¨ while 布尔表达式 do { … } 循环: for_loop:有下界、上界、循环步长 分支: switch/case:根据不同的取值执行不同的分支 其中,循环、分支 可等价为: 无条件转移/条件转移 + 布尔表达式(关系表达式) 本节仅讨论前2种语句的翻译。 * 条件转移/无条件转移语句基于的文法: G4.14 S→ id:S (1) // 带标号的语句 | goto id (2) // goto语句 | if E the

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档