预测分析法
空串使用~代替
E’使用小写代替
E -> Te
e -> +Te|~
T -> Ft
t -> *Ft|~
F -> (E)|i|x|y
1.获取非终结符的first集和follow集
first集:
(1)终结符first集为中姐夫本身
(2)若X->a ,则a为X的first集
(3)若X->~, 则 ~ 属于Xfirst集
(4)若X->Y,则将first(Y)加入到first(X)中
(5)E->TE’,若 ~ 属于first(T),则将first(E’)添加至first(E)中
follow集:
(1)A->aB A->aBb (~ 属于 first(b)), 则将follow(A)添加至follow(B);
(2)E->TE’ (~ 属于 first(T)),则follow(E’)应包括follow(E);
(3)E -> TE’ (~属于 first(E’)),则follow(T)应包括follow(E);.
(4)文法开始符号应添加 #
2.编写程序获取产生式的first集和follow集
产生式 | first | follow |
---|---|---|
E -> Te | ||
e -> +Te | ||
e -> ~ | ||
T -> Ft | ||
t -> *Ft | ||
t -> ~ | ||
F -> (E) | ||
F -> i | ||
F -> x | ||
F -> y |