FIRST集合和FOLLOW集合的求法如下: 1、FIRST集合的求法: 直接收取:如果X是终结符或为空,则First(X) = {X}。 反复传送:如果X是非终结符,则First集合一直传送下去,直到遇到终结符。第一个状态减去ε(即空字符串)后加入到First集合中。注意传送时非终结符是否可以为空,如果可以为空,则看下一个字符。 对于形...
FIRST、FOLLOW集求法
1. 在所要求的字符产生式的右边的第一位寻找终结符,假设该字符产生式集的第一位就是终结符,那么该终结符就是所要求的first集;2. 假设产生式的右边第一位是非终结符,那么继续寻找该非终结符的first集,直至寻找到一个终结符,即是起初所要求字符的first集;Follow集的计算就相对first集稍微难一点:follow集...
first集和follow集的求法 在产生式的右边找到相应的字符,假设紧跟其后的是一个终结符,那么该终结符就是所要求的follow集;假设跟在其后的是一个非终结符,那么需要判断该非终结符是否可以为空:假如可以为空,那么将该产生式的左边的follow集加入到寻找集合当中,因为假如该非终结符为空的话,那么需要寻找产生这个...
follow(E) = first(T) ∪ {+, $} follow(E) = {+, a, $} 3. follow(E) = {+, $} 那么最终E的follow集合就是{+, a, $}。 总结 通过以上介绍,我们可以看到,first集合和follow集合的求法是非常简单的,但同时也是语法分析器构建过程中不可或缺的一部分。在实际开发中,我们可以利用计算机算法来计...
思路:求FOLLOW()集合,一般都是从上往下依次求。 对于FOLLOW(E),首先E作为一个句型的最右符号(可以理解为最初推导的原符号),$一定是要加入FOLLOW(E) ∴FOLLOW(E)={ $ } 然后我们需要找到E的后面是否含有终结符 所有的式子中,只有最后一个式子在推导式中可以找到E ...
语法分析Follow集和first集讲解,需要 耐心和思考 看完了一定做题没问题, 相信我,没错滴!!! 对这个文法进行下列分析: 规则其实已经说的很清晰了,如下四种情况: 1.假如X已经是一个终结符号了,也就是说如下面的形式求解: 求First(F),首先,F两个产生式的体,也就是F->(E)和F->id,这里面的id和(都已经是...
FOLLOW集 条规则,不断地将子集加入FOLLOW集,知道没有符号可以加入为止。 举例: 求FOLLOW(E),首先,E是开始符号,将#加入FOLLOW(3);找E出现在右部的产生式,发现只有F→(E) 这里...;} 减去{ε}的原因:因为FOLLOW集中跟的是一个终结符号,即使可能存在ε∈FIRST(β),β使用空串产生式进行推导后,X后面仍然会...
有关预测分析表的求法,上面的blog在最后提到了,很容易理解。 首先构造出预测分析表的第一行与第一列,第一行为文法出现的所有终结符以及‘#’(注意:没有 ε ,因为 Follow 集不含 ε),第一列为文法出现的所有非终结符。 然后对文法 G 的每个产生式 A -> ab 都执行如下操作: ...
(1)、将$放入到Follow(S)中,其中S是开始符号,而$是输入右端结束的标记。 (2)、如果存在一个产生式AàaBb,那么First(b)中除#(空串)外地所有符号都在Follow(B)中。 (3)、如果存在一个产生式AàaB,或存在AàaBb且First(b)包含#(空串),那么Follow(A)中的所有符号都在Follow(B)中。