首页 > 编程知识 正文

slr是什么车(周杰伦奔驰slr)

时间:2023-05-06 00:27:33 阅读:102663 作者:4109

语法分析上,单反使用FOLLOW集合,LR使用搜索器,这是两者功能不同的根本原因。

跟随集的计算方法:

1.对于方法开始S,在FOLLOW(S)中输入#号;

2.如果A-B是生产公式,在FOLLOW(B)中加入FIRST()/{};

3.如果A-B是产品,在FOLLOW(B)中添加FOLLOW(A)。

对于第二种,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,直到闭合(1)不增加。

差异。显然,步骤2涉及搜索者的计算。当使用项目的搜索字符时,我们实际上是在检查多个搜索字符,即FIRST(a)。所以我们称FIRST(a)为搜索算子的集合。有点像FOLLOW集合,它也是方法符号之后的终止符。

从搜索算子集的计算过程来看,它是一个更严格的FOLLOW集。因为它只使用了FOLLOW集合计算方法的第一步和第二步(这里没有显示第一步)。这样做的后果是,搜索字符集肯定会出现在某个句型中,并立即跟随其项目中产品左侧的非终结符。跟随集的元素不一定是。

第二步可以保证你想要的是紧接在非终结者之后。因为在语法语言中,如果A-B是一个产生式,那么一定有一个带有B短语的句型,然后B会被分解,此时FIRST()必须跟在后面。

第三步不是。思路可以理解为:A之后的终结者一定要跟着B,这个推理没有错,但问题是要把B还原成A,必须出现在B的前面,没有,即使FOLLOW(B)出现在B的后面,也不能还原成A。

举出教材的例子。考虑方法:

(1)信噪比

(2)南南合作

(3)左-*右

(4)左一

(5)R-L

可以计算出FOLLOW(R)包含“=”,但当遇到R=时,就不能约简。因为R前面没有“*”号,语法中也不包含前缀为R=”的句型。再次计算FOLLOW(B),你会发现“=”符号是通过步骤3计算出来的。即通过(1)和(3),认为L后面的终止符必须跟在R后面,但(3)要求R前面加“*”。

先来看看单反分析中的移入协议冲突。

在状态2中,如果遇到“=”,可以在单反中移动或者调节,因为选择调节的时候,要求后面跟着R的跟随集,发现“=”在R的跟随集中,可以按照单反的方法调节,所以还是有冲突的,冲突的根本原因是句型*R=R的情况下“=”在R之后。

让我们看看LR(1)中是否有冲突

在第二种状态下,使用R-L协议的前提是下一个匹配符号是“$”,所以这里没有冲突。所以对于LR(1)来说最重要的是包含了从前到后整个过程的影响,这样会让冲突的可能性更小。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。