三皇五帝宫

求个符要多少钱:LR与SLR(FOLLOW集与搜索符)的区别

admin    2022-06-15    155

语法分析中,SLR使用的是FOLLOW集,LR使用的是搜索符,这是它们功能强弱不一的根本原因求个符要多少钱

FOLLOW集的计算方法:

1. 对于方法的开始符S求个符要多少钱,置#于FOLLOW(S)中;

2. 若A->αBβ是一个产生式求个符要多少钱,则把FIRST(β)/{ ε}加至FOLLOW(B)中;

3. 若A->αB是一个产生式,则把FOLLOW(A)加至FOLLOW(B)中求个符要多少钱

对于第二条,在FIRST集中除去ε的操作的解释是:跟着一个空输入没有什么意义,如果真的什么都不跟,那么至少有个#垫底,所以没有必要加入ε求个符要多少钱

搜索符的计算方法:

教材(陈火旺,国防工业出版社)上没有直接给出搜索符的算法求个符要多少钱。但在构造LR(1)项目集族的过程中,涉及到了搜索符的计算。下面是求LR(1)项目集闭包的过程:

1. I的任何项目都属于CLOSURE(I);

2. 若项目[A->α·Bβ,a]属于CLOSURE(I)求个符要多少钱,B->ξ是一个产生式,那么对于FIRST(βa)中的每个终结符b,如果[B->·ξ,b]原来不在CLOSURE(I)中,则把它加入;

3. 重复执行步骤2,直至CLOSURE(I)不再增大求个符要多少钱

区别求个符要多少钱。显然,步骤2涉及了搜索符的计算。在使用一个项目的搜索符时,其实在考查多个搜索符,也就是FIRST(βa)。所以我们把FIRST(βa)叫作搜索符集。有点像FOLLOW集,它也是跟在方法符号后面的终结符。

从搜索符集的计算过程来看,它是一个更严格的FOLLOW集求个符要多少钱。因为它只使用了FOLLOW集计算方法中的第1、2条(第1步骤在这里没有体现)。这样带来的后果就是:搜索符集一定会出现于某个句型中,且紧跟于,其项目中产生式左部的非终结符之后。而FOLLOW集的元素却未必。

步骤2能保证所求紧跟于非终结符之后求个符要多少钱。因为文法语言中,若A->αBβ是一个产生式,则一定有一个句型含αBβ短语,进而将B分解,此时FIRST(β)必跟其后。

步骤3则不然求个符要多少钱。其思路可以理解成,跟在A后的终结符就一定跟在B后面。这样的推理是没有错的,但问题在于要将B归约成A,B前面得出现α,若无α,即使B后面,出现了FOLLOW(B)也不能归约成A。

引用教材的例子求个符要多少钱。考虑方法:

(1)S->L=R

(2)S->R

(3)L->*R

(4)L->i

(5)R->L

可以有计算出FOLLOW(R)中含有”=”,但遇到R=的时,也不能做归约处理求个符要多少钱。因为R前面没有”*”号,而该文法中不含有以R=为前缀的句型。再计算FOLLOW(B),会发现”=”号是由步骤3算出来的。即通过(1)与(3)认为跟在L后的终结符就一定跟在R后面,但(3)中要求的是R前面有”*”号。

求个符要多少钱我们先来看下SLR分析中的移进规约冲突

在状态2中,如果遇到“=”,在SLR中可以移进,也可以规约,因为选择规约的时候要求后面跟随的是R的follow集合,发现“=”在R的follow集合中,按照SLR的方法,是可以规约的,所以还是存在冲突,冲突的根本原因是导致产生“=”在R后面的情况是在句型*R=R的情况下,要求前面一定要有“*”才会存在后面是“=”求个符要多少钱

我们看下在LR(1)中求个符要多少钱,这里是否存在冲突

在这里要求2号状态下,使用R->L规约的前提是下一位匹配符号是“$”才行,所以这里不存在上面的冲突,这么来看LR(1)最主要的就是从前到后把整个过程的影响都包含进来了,会让冲突的可能性更小求个符要多少钱

本文链接:http://35gh.com/post/%E6%B1%82%E4%B8%AA%E7%AC%A6%E8%A6%81%E5%A4%9A%E5%B0%91%E9%92%B1%3ALR%E4%B8%8ESLR%EF%BC%88FOLLOW%E9%9B%86%E4%B8%8E%E6%90%9C%E7%B4%A2%E7%AC%A6%EF%BC%89%E7%9A%84%E5%8C%BA%E5%88%AB.html

转载声明:本站发布文章及版权归网上道教,符咒批发,道教符咒,茅山符咒,符咒灵符,手绘符,手绘灵符,道家招财符咒,网上祭奠,网上祭拜,在线许愿网,网上拜财神,代烧香,代烧香祈福,代烧纸钱,招财符咒,婚姻和合符咒,回心转意符咒,桃花符咒,事业符咒,平安符咒,平安健康符咒,求子符咒,怀孕符咒,道教求子咒,求子怀孕符咒,网上道观,线上道观所有,转载本站文章请注明文章来源!

上一篇   下一篇

相关文章