LL(1)预测分析表的构造

LL(1)分析法(即预测分析法)是自上而下文法中的一种,使用这种方法需要用到LL(1)预测分析表。
前提:掌握了FIRST集和FOLLOW集的构造。

步骤:对于每一个产生式A→α
(1) 对每个终结符a∈FIRST(α),把A→α加至M[A,a]中。
(2) 若ɛ∈FIRST(A),则对任何b∈FOLLOW(A) , 把A→α加至M[A,b]中。
(3) 把所有无定义的M[A,a]标上“出错标志”。

例子:
现有文法:
G[ E]:
(1) E → TE’
(2) E’ → +TE’ |ɛ
(3) T → FT’
(4) T’→ *FT’|ɛ
(5) F → (E)
(6) F → i

已知其FIRST集和FOLLOW集
FIRST集 FOLLOW集
E (,i #,)
E’ +, ɛ #,)
T (,i +,#,)
T’ , ɛ +,#,)
F (,i +,#,),

对于产生式E → TE’,只需运用规则1,在M[E,(]和M[E,i]中放入产生式E → TE’。
对于产生式E’ → +TE’ |ɛ,除了运用规则1,在M[E’,+]中放入产生式E’ → +TE’ |ɛ;还需要运用规则2,在M[E’,)]和M[E’,#]中放入产生式E’ → +TE’ |ɛ。
以此类推,不再赘述。

最后得到的结果是
LL(1)预测分析表的构造

你,做对了吗?

注意:之前介绍FIRST集时,主语一般都是某一个非终结符,但现在主语变成了产生式右边的整个字符串,道理相同,单独拎出以防概念混淆。