FIRST(S) = {a, b}(因为S可以推导出aBc或bc,开头字符为a或b;注意c不能作为FIRST(S)的元素,因为只有当A和B都推导出ε时c才可能是S的开头字符,但这种情况下S的开头字符实际上是A和B可能推导出的字符,即a或b)。 FOLLOW集: FOLLOW(S) = {#}(因为S是开始符号,所以其后跟随的是识别符号#)。 FOLLOW(A...
1. 在所要求的字符产生式的右边的第一位寻找终结符,假设该字符产生式集的第一位就是终结符,那么该终结符就是所要求的first集;2. 假设产生式的右边第一位是非终结符,那么继续寻找该非终结符的first集,直至寻找到一个终结符,即是起初所要求字符的first集;Follow集的计算就相对first集稍微难一点:follow集...
这里,First(β)表示β能推导出的第一个终结符或非终结符的集合,但要去掉ε。 如果β可以推导出ε,则将FOLLOW(A)加至FOLLOW(B)中。这意味着,如果B有可能是最后一个符号,那么A的FOLLOW集合应该加入到B的FOLLOW集合中。 反复使用上述规则,直到所求FOLLOW集合不再增大为止。 以上是对FIRST集合和FOLLOW集合求法的...
编译原理:FIRST集、FOLLOW集、SELECT集的求法及LL(1)文法的判定——篇③SELECT集的求法及LL(1)文法的判定 来说就是,若式子是以终结符开头,则SELECT集直接为该终结符;若式子满足A—>α,α不能推出ε,则SELECT集为其串首非终结符的FIRST...FOLLOW集的求法见添加链接描述 SELECT集对于产生式A—>α,集合selec...
(1)、将$放入到Follow(S)中,其中S是开始符号,而$是输入右端结束的标记。 (2)、如果存在一个产生式AàaBb,那么First(b)中除#(空串)外地所有符号都在Follow(B)中。 (3)、如果存在一个产生式AàaB,或存在AàaBb且First(b)包含#(空串),那么Follow(A)中的所有符号都在Follow(B)中。
First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。 follow集的求法,如果产生式中包含ε,则求出follow,否则是不需要求follow集的。
对于B',根据B'->bB'|ε,其first集为:first(B') = {b,ε}。因为b和ε直接出现在B'的最左侧,所以不需要考虑B'的first集。然后,我们计算follow集:对于S',其follow集为:follow(S') = {#}。因为S'是文法的开始符号S的直接后缀。对于S,其follow集为:follow(S) = {#}。因为S是...
题目 求G'中每个非终结符的FIRST集合和FOLLOW集合;(5分)3.构造预测分析表。(5分) 相关知识点: 试题来源: 解析答:1、S→aBCD|cdB→bB’B’→bB’|空D→dD’ D’→空|D 2、FIRST(S)={a,c}FOLLOW(S)={#}FIRST(B)={b}FOLLOW(B)={c}FIRST(B’)={b,空}FOLLOW(B’)={c}...
1. $ ∈ follow(E) 2. follow(T) = {+, $} follow(E) = first(T) ∪ {+, $} follow(E) = {+, a, $} 3. follow(E) = {+, $} 那么最终E的follow集合就是{+, a, $}。 总结 通过以上介绍,我们可以看到,first集合和follow集合的求法是非常简单的,但同时也是语法分析器构建过程中不可...
First集合的求法: First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。 1. 直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U)中 ...