FIRST集合和FOLLOW集合的求法如下: 1、FIRST集合的求法: 直接收取:如果X是终结符或为空,则First(X) = {X}。 反复传送:如果X是非终结符,则First集合一直传送下去,直到遇到终结符。第一个状态减去ε(即空字符串)后加入到First集合中。注意传送时非终结符是否可以为空,如果可以为空,则看下一个字符。 对于形...
FIRST、FOLLOW集求法
First集的计算方法如下:1. 在所要求的字符产生式的右边的第一位寻找终结符,假设该字符产生式集的第一位就是终结符,那么该终结符就是所要求的first集;2. 假设产生式的右边第一位是非终结符,那么继续寻找该非终结符的first集,直至寻找到一个终结符,即是起初所要求字符的first集;Follow集的计算就相对first...
follow(E) = first(T) ∪ {+, $} follow(E) = {+, a, $} 3. follow(E) = {+, $} 那么最终E的follow集合就是{+, a, $}。 总结 通过以上介绍,我们可以看到,first集合和follow集合的求法是非常简单的,但同时也是语法分析器构建过程中不可或缺的一部分。在实际开发中,我们可以利用计算机算法来计...
follow集的意义是寻找所要求字符的下一个字符可能产生的集合,所以寻找follow集应从产生式的右边进行寻找。First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。 1. 直...
FOLLOW() 定义: 我的理解:对于A,求FOLLOW(A)的意思就是:找出A后面跟着的第一个终结符 的集合。与FIRST(A)的区别就是:FIRST(A)是在A推导出来的式子中找第一个终结符,而FOLLOW(A)则是直接在A后面找第一个终结符举例说明: 思路:求FOLLOW()集合,一般都是从上往下依次求。
FOLLOW(A)加至FOLLOW(B)中,否则把FIRST(β)- {e}加至FOLLOW(B)中。 反复使用上述规则,直到所求FOLLOW集不再增大为止。 注意: 在FOLLOW集合中无ε。 //FIRST集从产生式左侧推导,而FOLLOW集从产生式右侧推导。例如求A的FIRST集,要先从产生式左侧找到A,然后根据产生式右侧的信息求出A的FIRST集;求A的FOLLOW集...
(1)、将$放入到Follow(S)中,其中S是开始符号,而$是输入右端结束的标记。 (2)、如果存在一个产生式AàaBb,那么First(b)中除#(空串)外地所有符号都在Follow(B)中。 (3)、如果存在一个产生式AàaB,或存在AàaBb且First(b)包含#(空串),那么Follow(A)中的所有符号都在Follow(B)中。
我们的目标是计算每个非终结符的first和follow集。 我们需要了解first集的概念。对于一个非终结符A,它的first集包含了所有以A开头的句子的首个终结符。计算一个非终结符的first集可以按照以下步骤进行: 1. 如果A是一个终结符,那么A的first集就是A本身。 2. 如果A是一个非终结符,那么我们需要考虑A的每个产生...