这个LL(1)解析表是正确的吗?

时间:2016-12-21 16:42:25

标签: compilation grammar context-free-grammar

鉴于语法:

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

它的LL(1)解析表是这样的吗? enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

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

关注(S)= {a,b}(如果SAB - > AB然后是SaAB - > aAB或SbB - > bB)

跟随(A)= {a,c}(如果AaA - > aA和Ab - > b然后AaA - > aA或Ab - > b)

跟随(B)=跟随(A)= {a,c}(模型生产A - > aB,其中一个终端,a =ε,然后跟随(A)=跟随(B))

跟随(C)= {a,b}(来自B - > CA,B - > CaA或B - > Cb)

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