这个 LL(1) parse table 是正确的吗?

This LL(1) parse table is correct?

给出的语法:

S -> AB
A -> aA | b
B -> CA
C -> cC | ɛ

它的LL(1)解析table是这个吗?

不,由于这些计算,它并不完全正确:

第一个(S)=第一个(A)= {a,b}
第一(A)= {a,b}
第一(B)=第一(C)= {c,ε}
第一(C)= {c,ε}

考虑到每个非终结符号的跟随是紧随其后的终结符号:

Follow(S) ={a,b}(如果 SAB --> AB 那么 SaAB --> aAB 或 SbB --> bB)

Follow(A) = {a,c}(如果 AaA-->aA 和 Ab --> b 那么 AaA --> aA 或 Ab --> b)

Follow(B)=Follow(A)={a,c}(模型制作A-->aB,其中一个终端,且a=ε,则Follow(A)=Follow(B))

Follow(C) = {a,b}(从 B-->CA,B-->CaA 或 B-->Cb)

因此,您的解析 table 和这些计算的不同之处在于,在非终端 B 行中,a 列和 b 列的值为 NULL。