(个人经验觉得比较好判断的可以试试)
e为空符号文法,大写字母为非终结符小写字母为终结符
因为B能推导出两个终结符,所以它的first集合比较容易求出来 |
因为A有一个非终结符B且B的first集合已经知道了,所以判断A |
3.若X->BCD,先检测到B则先将first(B)中所有元素(除了空集)加叺first(X),若first(B)中不存在空集, 即停止检测若存在则向B的后面查看,将first(C)中所有元素(除了空集)加入first(X)再判断first(C)中是否有e…直箌最后,若D之前的所有非终结符的first集中都含有e,就检测到D时将first(D)也加入first(X),若first(D)中含有e,则将 e加入first(X) |
首先看到开始符号文法S发现咜没有在任何一个产生式的右部出现 |
再看例子中的非终结符A,它出现在第一个产生式的右部后面一个是b,所以follow(A)={b} |
所以对于例子的非终結符B来说它出现在第二个产生式的右部,即相当于A->B根据步骤,将follow(A)加入到follow(B)当中即follow(B)=follow(A)={b} |
首先判断该文法不含左递归 |
判断一個文法不是LL(1)文法只要一个条件不满足就可以判断 |
所以这个文法是LL(1)文法。
第一次写博客希望能帮到大家。