编译原理第四章习题答案讲述.pptVIP

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 本章教学线索 1 语法分析器的作用 2 自上而下分析的基本方法和面临的问题 3 LL(1)分析法 4 递归下降分析程序构造 5 预测分析程序 6 LL(1)文法中的出错处理 * 4 递归下降分析程序构造 递归下降分析器:对于LL(1)文法构造不带回朔的自上而下的分析程序,分析程序由一组递归过程组成,每个过程对应文法的一个非终结符。 构造方法:对于每一个A∈VN,构造一个递归程序A,过程A根据当前面临的输入符号(向前看符号)a处于A的那个候选式的FIRST集合中,就选择哪个候选式进行分析,根据选择的候选式,从左到右,若是终结符则和当前输入符号匹配;若是非终结符,则调用相应过程。若a∈FOLLOW(A),则选择A→ε,ε属于A的候选首符集。 * 例如:E→TE‘ E’→+TE‘|ε T→FT’ T‘→*FT’| ε F→(E)|i PROCEDURE E; BEGIN T;E’ END; PROCEDURE E’ IF SYM= ‘+’ THEN BEGIN ADVANCE; T;E’ END PROCEDURE T; BEGIN F;T’ END PROCEDURE T’ IF SYM=‘*’ THEN BEGIN ADVANCE; F;T’ END; PROCEDURE F; IF SYM = ‘i’ THEN ADVANCE ELSE IF SYM = ‘(’ THEN BEGIN ADVANCE; E; IF SYM = ‘)’ THEN ADVANCE ELSE ERROR END; ELSE ERROR; * 扩充的巴科斯范式(上下文无关文法产生式的元符号“→”“|”的扩展) (1)用{α}表示闭包运算α*; (2)用 表示α可以任意重复0次至n次, =α0=ε; (3)用[α]表示 ,即表示α的出现可有可无(等价于α|ε)。 例:实数的定义: decimal→[sign]integer.{digit}[exponent] exponent→E[sign]integer integer→digit{digit} sign→+|- digit→0|1|2|3|4|5|6|7|8|9 又如:E→T|E+T 可以表示为 E→T{+T} * 本章教学线索 1 语法分析器的作用 2 自上而下分析的基本方法和面临的问题 3 LL(1)分析法 4 递归下降分析程序构造 5 预测分析程序 5.1预测分析表的概念和构成 5.2 预测程序的工作过程 6 LL(1)文法中的出错处理 * 5 预测分析程序 预测分析程序就是利用一张分析表和一个栈进行联合控制来实现LL(1)文法的分析,预测分析是一种非递归方法。 预测分析:自顶向下分析是从文法的开始符号出发,试构造一个最左推导,从左到右匹配输入的单词符号串。如果在每步推导中,面对被替代的非终结符A和当前从左到右读入输入串读到的单词符号a,如果A的产生式候选式αi的终结首符集包括a则我们就可以用产生式A→αi构造最左推导,即用αi代替A。 * 5.1 预测分析表的概念和构成 预测分析表的概念: 预测分析表是一个M[A,a]形式的矩阵,其中A为非终结符,a是终结符或‘#’(#作为输入串的结束符)。矩阵元素M[A,a]中存放着一条关于A的产生式,指出当A面临输入符号a时所应采用的候选式。M[A,a]中也可能存放一个“出错标志”,指出A根本不该面临输入符号a。 * 思想:假定A→α是一个产生式,a∈FIRST(α),则当A呈现在STACK栈之顶且a是当前输入符号时,α应被当作A的唯一合适的全权代表。因此M[A,a]中应该放进产生式A→α。当α=ε或α ε时,如果当前面临的输入符号a(可能是终结符或‘#’)属于FOLLOW(A),那么,A→α就认为已获得自动匹配,因而,应把A→α放在M[A,a]中。 构造分析表的算法: 对文法G的每个产生式A→α执行第二步和第三步; 对每个终结符a∈FIRST(α),把A→α加到M[A,a]中; 若ε∈FIRST(α),则对任何b∈FOLLOW(A)把A→α加到M[A,b]中; 把所有无定义的M[A,a]标上‘出错标志’。 结论: 预测分析表不含多重定义表项,则该文法为LL(1)文法 二义性文法一定不是LL(1)文法 + ? 例子:对于文法E→TE,E→+TE|ε,T→FT,T→*FT|ε,F→(E)|i: FIRS

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档