求个符要多少钱:LR与SLR(FOLLOW集与搜索符)的区别
语法分析中,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)最主要的就是从前到后把整个过程的影响都包含进来了,会让冲突的可能性更小求个符要多少钱。
转载声明:本站发布文章及版权归网上道教,符咒批发,道教符咒,茅山符咒,符咒灵符,手绘符,手绘灵符,道家招财符咒,网上祭奠,网上祭拜,在线许愿网,网上拜财神,代烧香,代烧香祈福,代烧纸钱,招财符咒,婚姻和合符咒,回心转意符咒,桃花符咒,事业符咒,平安符咒,平安健康符咒,求子符咒,怀孕符咒,道教求子咒,求子怀孕符咒,网上道观,线上道观所有,转载本站文章请注明文章来源!