FIRST(α)={a | αaβ,a∈VT,α,β∈V *}。 若αε,ε∈FIRST(α)。 由定义可以看出,FIRST(α)是指符号串α能够推导出的所有符号串中处于串首的终结符号组成的集合。所以FIRST集也称为首符号集。 设α=x1x2…xn,FIRST(α)可按下列方法求得: 令FIRST(α)=Φ,i=1; 若xi∈VT,则xi∈FIRST(α)...
First集合: First(S) = {a, b}(因为 S 可以推导出 aA 或 bB) First(A) = {c, ε}(因为 A 可以推导出 c 或ε) First(B) = {d, ε}(因为 B 可以推导出 d 或ε)Follow集合: Follow(S) = {#}(因为 S 是开始符号,且输入串以 # 结束)Follow...
2.1假如可以为空,那么将该产生式的左边的follow集加入到寻找集合当中,因为假如该非终结符为空的话,那么需要寻找产生这个非终结符的产生式左边的非终结符,因为产生式左边的非终结符的follow集就有可能是该非终结符的follow集;2.2假如不为空,那么寻找该非终结符的first集,并将结果加入到搜索集合当中。3.直到...
因为 First(expression)={LEFT_PARENT, NUMBER, IDENTIFIER, EPSILON}, First(SEMICOLON)={SEMICOLON}, 同时 expression->EPSILON,也就是 expression 能推导到EPSILON,所以两个集合并起来也就是{LEFT_PARENT, NUMBER, IDENTIFIER, EPSILON, SEMICOLON}是 First(statement)的一个 子集。需要注意的是,如果a对应三个非...
FOLLOW(T) = {+, ), #} FOLLOW(T') = {+, ), #} FOLLOW(F) = 求下面的文法G(S)的非终结符的FIRST集合和FOLLOW集合: S->a|^|(T) T->ST' T'->,ST'|ε FIRST(S) = {a, ^, (} FIRST(T) = {a, ^, (} FIRST(T') = {,, ε} (注意有两个逗号,第一个是元素,第二个是集...
若存在产生式A →αBβ,则将First(β) - {ε}加至FOLLOW(B)中。这里,First(β)表示β能推导出的第一个终结符或非终结符的集合,但要去掉ε。 如果β可以推导出ε,则将FOLLOW(A)加至FOLLOW(B)中。这意味着,如果B有可能是最后一个符号,那么A的FOLLOW集合应该加入到B的FOLLOW集合中。 反复使用上述规则,直...
正确答案:答:计算文法的FIRST和FOLLOW集合:FIRST(M) = { a,b,e,d, } FIRST(T) = { a,b,e,d, }FIRST(B) = {b,e,d, } FIRST(D) = {d,}FOLLOW (M) = {#} FOLLOW (T) = { a,b,e,d,#}FOLLOW (B) = {a,# } FOLLOW (D) = { b}检查文法的所有产生式,我们...
follow集的意义是寻找所要求字符的下一个字符可能产生的集合,所以寻找follow集应从产生式的右边进行寻找。First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。 1. 直...
FIRST集合的简单理解就是推导出的字符串的开头终结符的集合。 FOLLOW集合简单的理解就对于非终结符后面接的第一个终结符。 给定一个由终结符和非终结符组成的字符串,FIRST( FIRST( FOLLOW(X)是可直接跟随与X之后的终结符集合。也就是说,如果存在着任一推导包含Xt,则t∈FOLLOW(X)。当推导包含XYZt,其中Y和Z都...
接着我们可以判断E+T和T所能推导出的所有终结符号,并将这些终结符号加入到E的first集合中。具体步骤可以参考下面的推导过程: E → E + T E → T T → a 那么最终E的first集合就是{a,+}。 二、follow集合 follow集合指的是文法中每个非终结符号在所有推导过程中后跟的符号的集合。例如对于一个简单的文法...