第6章 LR分析.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 LR分析

第六章 LR分析; 算符优先分析中,句柄是通过运算符的优先关系而求得,LR方法中句柄是通过求可归前缀而求得。 LR(k)分析是根据当前分析栈中的符号串和向右顺序查看输入串的k(k≥0)个符号就可以唯一确定分析的动作是移进还是归约以及用哪个产生式归约。 从左到右扫描(L)自底向上进行规约(R) (是规范规约) ; 第六章 LR分析;第六章 LR分析;6.1 LR概述;1、LR分析器结构示意;逻辑上说,一个LR分析器由3个部分组成: (1) 总控程序,也可以称为驱动程序。对所有的LR分析器总控程序都是相同的。 (2)?分析表或分析函数,不同的文法分析表将不同,同一个文法采用的LR分析器不同时,分析表也不同,分析表又可分为动作表(ACTION)和状态转换(GOTO)表两个部分,它们都可用二维数组表示。分析表是根据具体的文法按某种规则构造出来的. (3) 分析栈,包括文法符号栈和相应的状态栈,它们均是先进后出栈。 分析器的动作就是由栈顶状态和当前输入符号所决定。 ;2、LR分析器的逻辑结构;LR分析过程的思想是在总控程序的控制下,从左到右扫描输入符号串,根据分析栈中的状态和文法及当前输入符号,按分析表完成相应的分析工作。 LR分析过程的思想: 记住历史:记住已移进和归约的整个符号串。(即栈中的内容) 立足现实:输入串读头下的符号 展望未来:根据所用的产生式推测未来可能碰到的输入符号。(也通过栈识别) ;3、LR分析表结构;4、LR分析器的工作过程;4、LR分析器的工作过程(续1);Action[sm, ai]= rj 表示用第 j 条产生式 A→Xm-(k-1)…Xm (有k个符号) 进行归约, 格局变为: 分析栈 s0s1… sm-k 输入串 #X1…Xm-kA aiai+1…an#;LR分析过程: LR分析步骤: (a) 将初始状态S0和句子的左界符#分别进分析栈。 (b) 根据栈顶状态和当前输入符号查动作表,进 行如下的工作。 ※ 移进:当前输入符号进符号栈,根据状态转换表新的状态进状态栈,继续扫描,从而下一输入符号变成当前输入符号。 ※ 归约: (1)按某个产生式进行归约,若产生式的右端长度为n,则符号栈顶和状态顶n个元素同时相应???栈。(2)归约后的文法符号进符号栈; (3)查状态转换表,新的状态进状态栈。 ※接受:分析成功,终止分析。 ※出错:报告出错信息。 (2) 具体分析过程:; LR分析算法;LR分析算法;5、LR文法;6、LR分析器示例;其LR分析表为:;假定输入串为i*i+i, LR分析器的工作过程: 步骤 状态 符号 输入串 (1) 0 # i*i+i# (2) 05 #i *i+i# (3) 03 #F *i+i# (4) 02 #T *i+i# (5) 027 #T* i+i#;假定输入串为i*i+i, LR分析器的工作过程: 步骤 状态 符号 输入串 (5) 027 #T* i+i# (6) 0275 #T*i +i# (7) 02710 #T*F +i# (8) 02 #T +i# (9) 01 #E +i# (10) 016 #E+ i#;步骤 状态 符号 输入串 (10) 016 #E+ i# (11) 0165 #E+i # (12) 0163 #E+F # (13) 0169 #E+T # (14) 01 #E # (15) 接受;6.2 LR(0)分析表的构造;一、相关概念;例 文法G[S]: (1) S → aAcBe (2) A → b (3) A → Ab (4) B → d 最右推导过程 S ?aAcBe[1] ?aAcd[4]e[1]?aAb[3]cd[4]e[1] ?ab[2]b[3]cd[4]e[1];1. 活前缀不含有句柄的任何符号,此时期望A→β的右部所推出的符号串。;为了记住大部分移进栈的活前缀,为每个产生式构造一个自动机,由它的状态来记住当前情况。 与一个具体文法相联系的所有活前缀能够被有穷状态机所接受。 在构造LR分析器时可从文法的产生式直接构造(自动地)识别文法G的所有活前缀的DFA M。 LR分析表是DFA M的一种描述形式,根椐DFA M构造LR分析表。;二、核心概念之一:LR(0)项目;为刻划分析过程中的文法G的每一个产生式的右 部符号已有多大一部分被识别(出现在栈顶) 的情况,分别用标有圆点的产

文档评论(0)

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

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

1亿VIP精品文档

相关文档