非S得其他非终结符什么时候有#什么时候没有#?
求某一非终结符的follow集,主要看产生式右端(含有该非终结符的右端)。
因为S是该文法的开始符,所以#在follow(S)中。在产生式S->xSNy的右端,S的后跟符号是first(Ny),即z和y。这样follow(S)={y,z,#}
求follw(N)时,看产生式S->xSNy和S->Nx,在它们的右端都含有N,根据S->xSNy可知,y在follw(N)中;根据S->Nx可知,x在follw(N)中;这样follw(N)={x,y}
虽然产生式N->zN的右端也含有N,但根据follow集合的定义,将follw(N)加入follw(N)中没有意义,所以不用计算。
对于不是开始符的其他非终结符,其follow集合有没有#,要看产生式的结构(产生式右端)。
这个不是LL(1)文法吧?
追答不是。
因为select(S->xSNy)={x}
select(S->Nx)={x,z}
两个集合的交集不为空,所以不是LL(1)文法