首先要构造FIRST集合和FOLLOW集合
例题
首先构造比较简单的FIRST集合
上面两个的FIRST集合非常好计算
直接提取候选式最开始的终结符即可
答案
接着构造它的FIRST集合
我们去找F的fist集合
由于F的fist集合里面没有空字,所以我们不去看 T’ 的 fist集合
而将F的first认为是T的first集合
同理
T的集合也没有空字,故T的first集合就是E的first集合
接着构造FOLLOW集合
我们首先在文法开始符号E加入#
注意FOLLOW集合里面没有空字
即FOLLOW(E) = { # }
接着我们开始一个一个构造
由它我们知道
1、E’ 的fist集合一定是T的FOLLOW,因为E’跟在T的后面
2、E的follow也是E’的FOLLOW(如果T的候选式没有空字,那么E的follow不是T的follow)
3、由于
first(E’)含空字,故E的follow也是T的follow接着我们来考虑
1、E’的FIRST是T的FOLLOW
2、看E’的first有没有空字,有的话E‘的follow也是T的follow
依次类推
构造完之后开始构造分析表
竖列是文法出现的所有的非终结符
横行是文法出现的所有的终结符加结束标志#
然后根据上面的表格填写,首先填写First部分
如果产生式的右端直接以终结符开头例如
那么只在这个终结符所对应的非终结符那一个格子把产生式填写上
像这个式子两边都要填写,就是F对应的那一行以及( 和 i对应的两个列都要把这个式子写上
接着写follow集合
哪个式子可以产生空字,就把产生空字那一部分式子写在对应的格子上本题只有
这两个式子可以产生空字,那么就把他写在对应的格子上最后答案