第四章4.3 LL(1)分析方法.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.3 LL(1)分析方法 LL(1)是LL(k)的特例,其中的k则表示向前看k个符号。 LL(1)方法和递归下降法属于同一级别的自顶向下分析法。 LL(1)分析器的逻辑结构 一个LL(1)分析器由输入流、LL(1)分析表、符号栈和驱动程序组成: 输入流:待分析的符号串 。 符号栈:存放分析过程中的文法符号串。 LL(1)分析表:用来表示相应文法的全部信息 的一个矩阵(或二维数组)。 驱动程序:语法分析程序。 4.3.2 LL(1)分析表的构造 LL(1)分析表的构造方法: 对文法的每一个产生式求其predict集; 对文法的每一个产生式A→?进行如下处理: Predict( A→? )=(a1,a2,….,an); 则令: T(A,ai)=A→? ,i=1,2,3…,n LL(1)分析表的其它元素为error。 求LL(1)分析表的实例 文法G: 4.3.3 LL(1)驱动程序构造 LL(1)分析的动作:设当前格局为 (..... X1, Y1.....), 替换:当X1?VN时选相应候选式?去替换X1。 匹配:当X1?VT时,它与Y1进行匹配,其结果可能成功,也可能失败,如果成功则去掉X1和Y1,否则报错。 接受:当格局为(#,#)时报分析成功。 报错:出错后,停止分析。 LL(1)分析方法的驱动器 LL_Driver [1]初始化: Stack := empty ; Push(#); Push(S); 即由符号栈和输入流构成的初始格局为: (#S, a1a2...an#) [2] 读第一个输入符: Read(a); [3] 若当前格局是( #, # ),则成功结束;否则转下一步; [4] 设当前格局为(..... X, a.....),则: ? 若X? VT X= a ,则 { Pop(1); Read(a); goto [3] } ? 若X? VT X? a ,则 Error; ? 若X ? VN ,则: if T(X, a)=X→Y1 Y2........ Yn then { Pop(1);Push(Yn ,.....,Y1);goto[3] } else Error 4.3.4 LL(1)分析方法的进一步讨论 LL(1)分析方法的条件: 对于任一非终极符A,其任意两个产生式A→?和A→?,都要满足下面条件: Predict( A→? ) ? Predict( A→? ) = ? LL(1)文法:满足LL(1)分析方法条件的文法称为LL(1)文法。 非LL(1)文法主要有下面两种情形: 公共前缀:某个非终极符A有如下的两个产生式A???,A???。 左递归:某个非终极符A有直接左递归产生式A?A?或间接左递归。 非LL(1)文法到LL(1)文法的转换 消除左公共前缀 消除直接左递归 消除左递归 其它具体方法 已经证明非LL(k)文法是存在的 : BL语言{[i ]j | i =j=0} 不是LL(1)文法。 条件语句的产生式是无法变换成LL(1)型产生式的。 G[S]: S ? if id then S ELSE S ? OtherStm ELSE ? else S ELSE ? ? 自顶向下语法分析方法的总结 一、自顶向下语法分析的条件 predict(A?βk )?predict(A?βj )=? 当k?j 递归下降法能判断每个产生式的结束,而LL(1)方法则不能; 递归下降法分析法不用符号栈,而LL(1)方法则用符号栈。 练习题:构造下述文法的LL(1)分析表。 G[D]: D ? TL T ? int | real L ? id R R ? , id R | ε * * 用“LL(1)”命名该分析方法的原因: 第一个L表示:相应的语法分析将按自左至右的顺序扫描输入符号串; 第二个L表示:在分析过程中产生一个句子的最左推导; 括号中的“1”,则表示在分析过程中,每进行一步推导,只要查看一个输入符号便能确定当前所应选用的产生式。 ace # Match aBe # Be # ce # Derivation Success cKe # ce # e # e # # # 对给定的终极符串ace,分析过程: Z # ace # Derivatio

文档评论(0)

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

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

1亿VIP精品文档

相关文档