编译原理06素材.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文档。上传文档
查看更多
* 先手工构造FIRST和FOLLOW,然后再给出完整结果。 * 文法应写在黑板上 * * 1 预测分析表 L →E;L|ε E →TE E→+TE|-TE|ε T →FT T→*FT|/FT|mod FT|ε F →(E)|id|num id num + - * / mod ( ) ; # L E;L E;L E;L ε E TE TE TE E +TE -TE ε ε T FT FT FT T ε ε *FT /FT mod FT ε ε F id num (E) 文法: L→E;L|ε E→E+T|E-T|T T→T*F|T/F|T mod F|F F→(E)|id|num M[A, a]的内容:若当前栈顶是非终结符A,下一输入终结符是a,则M[A, a]指示下一步动作。 构造 分析表(M[A, a]): * 2 工作方式 放幻灯的方式: 每张“幻灯片”称为一个格局。 分析从某个初始格局开始,经过一系列的格局变化,最终到达接收格局,表明分析成功; 或者到达出错格局,表明发现一个语法错误。 格局:格局是一个三元组 (栈内容,当前剩余输入,改变格局的动作) ^top ^ip 改变格局的动作: ① 匹配终结符:若^top=^ip(但≠#),则pop且next(ip); ② 展开非终结符: 若^top= X且M[X,^ip]=α(X→α),则pop且push(α); ③ 报告分析成功:若^top=^ip=#,则分析成功并结束; ④ 报告出错:其它情况,调用错误恢复例程。 * 3 驱动器算法 算法3.4 非递归的预测分析 输入 输入序列ω和文法G的预测分析表M 输出 若ω∈L(G),得到ω的一个最左推导;否则指出一个错误 方法 初始格局为: (#S,ω#,分析器的第一个动作) 令ip指向ω#中的第一个终结符,top指向S; loop x:=top^; a:=ip^; exit when x=# and a=#; -- 分析成功 end loop; ■ if x ∈ T then if x=a then pop(x); next(ip); -- 匹配终结符 else error(1); -- 出错:栈顶终结符不是a end if; else if M[x, a] = X→Y1Y2...Yk then pop(X); push(YkYk-1...Y2Y1);--展开产生式 else error(2); -- 出错:产生式不匹配 end if; end if; * loop x := top^; a := ip^; if x ∈ T then if x=a then pop(x); next(ip); -- 匹配终结符 else error(1); -- 出错:栈顶终结符不是a end if; else if M[x, a] = X→Y1Y2...Yk then pop(X); push(YkYk-1...Y2Y1);--展开产生式 else error(2); -- 出错:产生式不匹配 end if; end if; exit when x=#; -- 分析成功 end loop; id num + - * / mod ( ) ; # L E;L E;L E;L ε E TE TE TE E +TE -TE ε ε T FT FT FT T ε ε *FT /FT mod FT ε ε F id num (E) 4 用预测分析器分析句子 id+id*id; * 4 用预测分析器分析句子(续) 栈 当前剩余输入 动作 #L id+id*id;# pop(L), push(E;L) (L→E;L) #L;E id+id*id;# pop(E), push(TE) (E→TE) #L;ET id+id*id;# pop(T), push(FT) (T→FT) #L;ETF id+id*id;# pop(F), push(id) (F→id) #L;ETid id+id*id;# pop(id), next(ip) id #L;ET +id*id;# pop(T) (T→ε) #L;E +id*id;# pop(E), push(+TE) (E→+TE) #L;ET+ +id*id;# pop(+), ne

文档评论(0)

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

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

1亿VIP精品文档

相关文档