基础:三个重要集合
First集
F i r s t ( β ) First(\beta ) First(β)对象是串 β \beta β,是 β \beta β串所有可能首字母(非终极符)组成的集合,包括 ε \varepsilon ε。
Follow集
F o l l o w ( A ) Follow(A) Follow(A)对象是非终极符 A A A,是 A A A之后的下一个字母(非终极符)的集合,没有 ε \varepsilon ε,有#表示终止符。
Predict集
P r e d i c t ( A → β ) Predict(A\to \beta ) Predict(A→β)对象是产生式 A → β A \to \beta A→β,如果产生式不可能为空串,则等于 F i r s t ( β ) First(\beta ) First(β),否则,这个集合包括 F i r s t ( β ) First(\beta ) First(β)的非空部分和 F o l l o w ( A ) Follow(A) Follow(A)的并。
求解方法
- 对于 F i r s t First First集,在以求 P r e d i c Predic Predict集为目的的情况下,一般是对每一个非终极符 A A A求其 F i r s t First First集,而不是对于每条产生式右部。方法以观察为主,注意的是优先去求产生式右部首字母是终极符的那些非终极符的 F i r s t First First集,再去求产生式右部首字母是非终极符的 F i r s t First First集,这样不容易出错。
- 对于
F
o
l
l
o
w
Follow
Follow集,也是最重要的部分,个人使用算法如下:
- 初始化:对于每个非终极符,初始化 S = { # } S=\left \{ \# \right \} S={#},其余非终极符为空集。
- 按顺序遍历每条产生式,按顺序遍历该产生式右部的每个非终极符(一个双重循环,如果产生式右部没有非终极符,或者为空,不做任何操作):
- 如果在产生式右部的串中,该非终极符右部已经没有东西了( A → α B A\to \alpha B A→αB),则建立关系: F o l l o w ( A ) ⊆ F o l l o w ( B ) Follow(A)\subseteq Follow(B) Follow(A)⊆Follow(B),把A标记在B的集合上: B = A { . . . } B = _{A}\left \{ ... \right \} B=A{...},此后每当 F o l l o w ( A ) Follow(A) Follow(A)扩充时,同时也对含有其下标的 F o l l o w ( B ) Follow(B) Follow(B)扩充。
- 如果在产生式右部的串中,该非终极符右部是一个终极符,直接将该终极符扩充入该非终极符的 F o l l o w Follow Follow集中。
- 如果在产生式右部的串中,该非终极符B右部是一个非终极符C,如果 F i r s t ( C ) First(C) First(C)不含 ε \varepsilon ε,将 F i r s t ( C ) First(C) First(C)扩充入 F o l l o w ( B ) Follow(B) Follow(B)中,否则,将 F i r s t ( C ) First(C) First(C)中除去 ε \varepsilon ε的其他所有元素扩充入 F i r s t ( C ) First(C) First(C)中,然后观察 C C C之后的串,所有可能出现的第一个非终极符,采用与所述三条中类似的策略。
- 注意:求
F
o
l
l
o
w
Follow
Follow集的易错之处在于对
F
o
l
l
o
w
(
A
)
⊆
F
o
l
l
o
w
(
B
)
Follow(A)\subseteq Follow(B)
Follow(A)⊆Follow(B)关系的更新处理出现的遗漏,以及思路的不清晰,导致对产生式中一些非终极符考虑的遗漏。对于一些易错的点,举几个例子:
A → B x A\to Bx A→Bx: F o l l o w ( B ) = F o l l o w ( B ) ∪ x Follow(B)=Follow(B)\cup x Follow(B)=Follow(B)∪x
A → x B ( ε ∈ F i r s t ( B ) ) : 标 记 B = A { . . . } A\to xB(\varepsilon \in First(B)):标记B = _{A}\left \{ ... \right \} A→xB(ε∈First(B)):标记B=A{...}, F o l l o w ( A ) Follow(A) Follow(A)所有元素并入B,且不断更新
A → B C d ( 对 B 分 析 ) : F o l l o w ( B ) = F i r s t ( C d ) , F i r s t ( C d ) 必 不 为 空 , 故 F o l l o w ( B ) 不 可 能 与 F o l l o w ( A ) 有 关 。 A\to BCd(对B分析): Follow(B)=First(Cd), First(Cd)必不为空,故Follow(B)不可能与Follow(A)有关。 A→BCd(对B分析):Follow(B)=First(Cd),First(Cd)必不为空,故Follow(B)不可能与Follow(A)有关。 - 对于
P
r
e
d
i
c
t
Predict
Predict集,直接给出公式:
P
r
e
d
i
c
t
(
A
→
β
)
=
{
F
i
r
s
t
(
β
)
,
ε
∉
F
i
r
s
t
(
β
)
{
F
i
r
s
t
(
β
)
−
{
ε
}
}
∪
F
o
l
l
o
w
(
A
)
,
ε
∈
F
i
r
s
t
(
β
)
Predict(A\to \beta )=\begin{cases} & \text{ }First(\beta ),\varepsilon \notin First(\beta ) \\ & \text{ } \left \{ First(\beta )-\left \{ \varepsilon \right \} \right \} \cup Follow(A),\varepsilon \in First(\beta ) \end{cases}
Predict(A→β)={ First(β),ε∈/First(β) {First(β)−{ε}}∪Follow(A),ε∈First(β)
实际上就是观察 β \beta β的首字母,如果是终极符,就直接填上结束,否则就要根据之前求的非终极符 F i r s t First First集和 F o l l o w Follow Follow集综合判断。特别的,有 P r e d i c t ( A → ε ) = F o l l o w ( A ) Predict(A\to \varepsilon )=Follow(A) Predict(A→ε)=Follow(A)
消除公共前缀和左递归
为了满足LL(1)文法分析条件,需要消除公共前缀和左递归。考试一般只要考虑直接左递归,因此只介绍消除公共前缀和直接左递归。
- 消除公共前缀: A → a B ∣ a C ∣ a D 变 为 A → a A ′ , A ′ → B ∣ C ∣ D A\to aB|aC|aD变为A\to aA^{'},A^{'}\to B|C|D A→aB∣aC∣aD变为A→aA′,A′→B∣C∣D
- 消除直接左递归: A → A α ∣ β 变 为 A → β A ′ , A ′ → α A ′ ∣ ε A\to A\alpha |\beta 变为A\to \beta A^{'},A^{'}\to \alpha A^{'}|\varepsilon A→Aα∣β变为A→βA′,A′→αA′∣ε,注意 ε \varepsilon ε容易遗漏。
例题(2011期末考试真题)
已知文法
G
G
G:
E
→
E
−
T
∣
T
T
→
T
∗
F
∣
F
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to E-T|T\\ &T\to T*F|F\\ &F\to rP|P\\ &P\to (E)|i\\ \end{aligned}
E→E−T∣TT→T∗F∣FF→rP∣PP→(E)∣i
首先,消除直接左递归:
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &{\color{Green} E^{'}\to -TE^{'}|\varepsilon } \\ &T\to FT^{'}\\ &{\color{Green} T^{'}\to *FT^{'}|\varepsilon} \\ &F\to rP|P\\ &{\color{Green} P\to (E)|i} \\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
对可以直求的非终极符 P P P, T ′ T^{'} T′, E ′ E^{'} E′求 F i r s t First First集:
非终极符 | First | Follow |
---|---|---|
E E E | ||
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | |
T T T | ||
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | |
F F F | ||
P P P | { ( , i } \left \{ (,i \right \} {(,i} |
F
i
r
s
t
(
P
)
First(P)
First(P)已知,可以直求
F
i
r
s
t
(
F
)
First(F)
First(F):
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &E^{'}\to -TE^{'}|\varepsilon \\ &T\to FT^{'}\\ &T^{'}\to *FT^{'}|\varepsilon \\ &{\color{Green} F\to rP|P} \\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | ||
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | |
T T T | ||
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | |
P P P | { ( , i } \left \{ (,i \right \} {(,i} |
F
i
r
s
t
(
F
)
First(F)
First(F)已知,可以求
F
i
r
s
t
(
T
)
First(T)
First(T),从而求
F
i
r
s
t
(
E
)
First(E)
First(E) :
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &{\color{Orange} E\to TE^{'}} \\ &E^{'}\to -TE^{'}|\varepsilon \\ &{\color{Green} T\to FT^{'}} \\ &T^{'}\to *FT^{'}|\varepsilon \\ &F\to rP|P\\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | |
P P P | { ( , i } \left \{ (,i \right \} {(,i} |
初始化 F o l l o w Follow Follow集:
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # } \left \{ \# \right \} {#} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | { } \left \{ \right \} {} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { } \left \{ \right \} {} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | { } \left \{ \right \} {} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { } \left \{ \right \} {} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | { } \left \{ \right \} {} |
对产生式
E
→
T
E
′
E\to TE^{'}
E→TE′,更新
T
T
T,
E
′
E^{'}
E′:
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &{\color{Green} E\to TE^{'} } \\ &E^{'}\to -TE^{'}|\varepsilon \\ &T\to FT^{'}\\ &T^{'}\to *FT^{'}|\varepsilon \\ &F\to rP|P\\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # } \left \{ \# \right \} {#} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | E { # } _{E}^{} \left \{ \# \right \} E{#} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | E ′ { − , # } _{E^{'}}^{} \left \{ -,\# \right \} E′{−,#} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | { } \left \{ \right \} {} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { } \left \{ \right \} {} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | { } \left \{ \right \} {} |
对产生式
E
→
−
T
E
′
E\to -TE^{'}
E→−TE′,更新
T
,
E
′
T,E^{'}
T,E′:(没有发生变化)
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &{\color{Green} E^{'}\to -TE^{'}|\varepsilon } \\ &T\to FT^{'}\\ &T^{'}\to *FT^{'}|\varepsilon \\ &F\to rP|P\\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # } \left \{ \# \right \} {#} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | E { # } _{E^{}}^{} \left \{ \# \right \} E{#} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | E ′ { − , # } _{E^{'}}^{} \left \{ -,\# \right \} E′{−,#} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | { } \left \{ \right \} {} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { } \left \{ \right \} {} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | { } \left \{ \right \} {} |
对产生式
T
→
F
T
′
T\to FT^{'}
T→FT′,更新
F
,
T
′
F,T^{'}
F,T′:
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &E^{'}\to -TE^{'}|\varepsilon \\ &{\color{Green} T\to FT^{'}} \\ &T^{'}\to *FT^{'}|\varepsilon \\ &F\to rP|P\\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # } \left \{ \# \right \} {#} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | E { # } _{E^{}}^{} \left \{ \# \right \} E{#} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | E ′ { − , # } _{E^{'}}^{} \left \{ -,\# \right \} E′{−,#} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | T { − , # } _{T^{}}^{} \left \{ -,\# \right \} T{−,#} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | T ′ { − , # , ∗ } _{T^{'}}^{} \left \{ -,\# ,*\right \} T′{−,#,∗} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | { } \left \{ \right \} {} |
对产生式
T
′
→
∗
F
T
′
T^{'} \to *FT^{'}
T′→∗FT′,更新
F
,
T
′
F,T^{'}
F,T′(没有发生变化):
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &E^{'}\to -TE^{'}|\varepsilon \\ &T\to FT^{'}\\ &{\color{Green} T^{'}\to *FT^{'}|\varepsilon} \\ &F\to rP|P\\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # } \left \{ \# \right \} {#} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | E { # } _{E^{}}^{} \left \{ \# \right \} E{#} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | E ′ { − , # } _{E^{'}}^{} \left \{ -,\# \right \} E′{−,#} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | T { − , # } _{T^{}}^{} \left \{ -,\# \right \} T{−,#} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | T ′ { − , # , ∗ } _{T^{'}}^{} \left \{ -,\# ,*\right \} T′{−,#,∗} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | { } \left \{ \right \} {} |
对产生式
F
→
r
P
F\to rP
F→rP,更新
P
P
P:
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &E^{'}\to -TE^{'}|\varepsilon \\ &T\to FT^{'}\\ &T^{'}\to *FT^{'}|\varepsilon \\ &{\color{Green} F\to rP|P} \\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # } \left \{ \# \right \} {#} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | E { # } _{E^{}}^{} \left \{ \# \right \} E{#} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | E ′ { − , # } _{E^{'}}^{} \left \{ -,\# \right \} E′{−,#} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | T { − , # } _{T^{}}^{} \left \{ -,\# \right \} T{−,#} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | T ′ { − , # , ∗ } _{T^{'}}^{} \left \{ -,\# ,*\right \} T′{−,#,∗} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | F { − , # , ∗ } _{F}^{} \left \{ -,\# ,*\right \} F{−,#,∗} |
对产生式
F
→
P
F\to P
F→P,更新
P
P
P(没有发生变化):
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &E^{'}\to -TE^{'}|\varepsilon \\ &T\to FT^{'}\\ &T^{'}\to *FT^{'}|\varepsilon \\ &{\color{Green} F\to rP|P} \\ &P\to (E)|i\\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # } \left \{ \# \right \} {#} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | E { # } _{E^{}}^{} \left \{ \# \right \} E{#} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | E ′ { − , # } _{E^{'}}^{} \left \{ -,\# \right \} E′{−,#} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | T { − , # } _{T^{}}^{} \left \{ -,\# \right \} T{−,#} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | T ′ { − , # , ∗ } _{T^{'}}^{} \left \{ -,\# ,*\right \} T′{−,#,∗} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | F { − , # , ∗ } _{F}^{} \left \{ -,\# ,*\right \} F{−,#,∗} |
对产生式
P
→
(
E
)
P \to (E)
P→(E),更新
E
E
E:
E
→
T
E
′
E
′
→
−
T
E
′
∣
ε
T
→
F
T
′
T
′
→
∗
F
T
′
∣
ε
F
→
r
P
∣
P
P
→
(
E
)
∣
i
\begin{aligned} &E\to TE^{'} \\ &E^{'}\to -TE^{'}|\varepsilon \\ &T\to FT^{'}\\ &T^{'}\to *FT^{'}|\varepsilon \\ &F\to rP|P\\ &{\color{Green} P\to (E)|i} \\ \end{aligned}
E→TE′E′→−TE′∣εT→FT′T′→∗FT′∣εF→rP∣PP→(E)∣i
非终极符 | First | Follow |
---|---|---|
E E E | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | { # , ) } \left \{ \# ,)\right \} {#,)} |
E ′ E^{'} E′ | { − , ε } \left \{ -,\varepsilon \right \} {−,ε} | E { # , ) } _{E^{}}^{} \left \{ \# ,)\right \} E{#,)} |
T T T | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | E ′ { − , # , ) } _{E^{'}}^{} \left \{ -,\#,) \right \} E′{−,#,)} |
T ′ T^{'} T′ | { ∗ , ε } \left \{ *,\varepsilon \right \} {∗,ε} | T { − , # , ) } _{T^{}}^{} \left \{ -,\# ,)\right \} T{−,#,)} |
F F F | { r , ( , i } \left \{ r,(,i \right \} {r,(,i} | T ′ { − , # , ∗ , ) } _{T^{'}}^{} \left \{ -,\# ,*,)\right \} T′{−,#,∗,)} |
P P P | { ( , i } \left \{ (,i \right \} {(,i} | F { − , # , ∗ , ) } _{F}^{} \left \{ -,\# ,*,)\right \} F{−,#,∗,)} |
至此
F
o
l
l
o
w
Follow
Follow集求解完毕。计算
P
r
e
d
i
c
t
Predict
Predict集:
P
r
e
d
i
c
t
(
E
→
T
E
′
)
=
{
r
,
(
,
i
}
Predict(E\to TE^{'} )=\left \{ r,(,i \right \}
Predict(E→TE′)={r,(,i}
P
r
e
d
i
c
t
(
E
′
→
−
T
E
′
)
=
{
−
}
Predict(E^{'} \to -TE^{'} )=\left \{ - \right \}
Predict(E′→−TE′)={−}
P
r
e
d
i
c
t
(
E
′
→
ε
)
=
{
#
,
)
}
Predict(E^{'} \to \varepsilon )=\left \{ \#,) \right \}
Predict(E′→ε)={#,)}
P
r
e
d
i
c
t
(
T
→
F
T
′
)
=
{
r
,
(
,
i
}
Predict(T\to FT^{'} )=\left \{ r,(,i \right \}
Predict(T→FT′)={r,(,i}
P
r
e
d
i
c
t
(
T
′
→
∗
F
T
′
)
=
{
∗
}
Predict(T^{'} \to *FT^{'} )=\left \{ * \right \}
Predict(T′→∗FT′)={∗}
P
r
e
d
i
c
t
(
T
′
→
ε
)
=
{
−
,
#
,
)
}
Predict(T^{'} \to \varepsilon )=\left \{ -,\#,) \right \}
Predict(T′→ε)={−,#,)}
P
r
e
d
i
c
t
(
F
→
r
P
)
=
{
r
}
Predict(F \to rP )=\left \{ r \right \}
Predict(F→rP)={r}
P
r
e
d
i
c
t
(
F
→
P
)
=
{
(
,
i
}
Predict(F \to P )=\left \{ (,i \right \}
Predict(F→P)={(,i}
P
r
e
d
i
c
t
(
P
→
(
E
)
)
=
{
(
}
Predict(P\to (E) )=\left \{ ( \right \}
Predict(P→(E))={(}
P
r
e
d
i
c
t
(
P
→
i
)
=
{
i
}
Predict(P\to i)=\left \{ i\right \}
Predict(P→i)={i}