自己的理解
例子如果x是乙個終結符,則first(x) = x
如果x是乙個非終結符,則x→y
1y2y
3⋯yk
x\rightarrow y_1y_2y_3\cdots y_k
x→y1y
2y3
⋯yk
,其中k≥1
k\ge1
k≥1。
∃ i∈
k,a∈
firs
t(yi
)且fi
rst(
y1)⋯
firs
t(yi
−1
)\exists i \in k,a\in first(y_i)且first(y_1)\cdots first(y_)
∃i∈k,a
∈fir
st(y
i)且
firs
t(y1
)⋯f
irst
(yi−
1)中都有
ϵ則把a
加入到f
irst
(x)中
中都有\epsilon 則把a加入到first(x)中
中都有ϵ則把
a加入到
firs
t(x)
中 並且可以有以下推論:
f ir
st(y
1)∈f
irst
(x
)first(y_1)\in first(x)
first(
y1)
∈fir
st(x
)如果y
1y_1
y1不能推導出ϵ
\epsilon
ϵ,則不會再往fir
st(x
)first(x)
first(
x)中新增任何元素
如果s
ss是開始符,則ς∈f
,ς
\varsigma\in f ,\varsigma
ς∈f,
ς是輸入右端的結束標記。
如果有a→α
bβ
a\rightarrow \alpha b\beta
a→αb
β,那麼fir
st(β
)first(\beta)
first(
β)中除了ϵ
\epsilon
ϵ之外的所有符號都在fol
low(
b)
follow(b)
follow
(b)中。
如果有a→α
ba\rightarrow \alpha b
a→αb
,或a →α
bβ
a\rightarrow \alpha b\beta
a→αbβ且fir
st(β
)first(\beta)
first(
β)包含ϵ
\epsilon
ϵ。則fol
low(
a)
follow(a)
follow
(a)的所有符號都在fol
low(
b)
follow(b)
follow
(b)中。
終結符的first就是自己
對於產生式,如果最左邊的能推導出ϵ
\epsilon
ϵ,則再開始推第二個,並把最左邊的first並到自己的first裡。
產生式的右邊如果存在,則把first(右邊)中除了ϵ
\epsilon
ϵ之外所有的符號加入follow(自己)
如果產生式的右邊能推導出ϵ
\epsilon
ϵ,或者不存在,則產生式左邊的follow也在自己的裡面。 g[s
]:
g[s]:
g[s]:e→t
e′
e \rightarrow te^
e→te
′ (1) e′→
+te′
∣ϵ
e^ \rightarrow +te^ | \epsilon
e′→+te
′∣ϵ(2) t→f
t′
t\rightarrow ft^
t→ft
′(3) t′→
∗ft′
∣ϵ
t^\rightarrow *ft^|\epsilon
t′→∗ft
′∣ϵ(4) f→(
e)∣i
df\rightarrow (e)|id
f→(e)∣
id(5)由(5)明顯易得:
first(f)= 因為是終結符
所以:first(t) = first(f) 因為(3),最左邊的元素,且first(f)裡沒有ϵ
\epsilon
ϵ同理根據(1)可得
所以first(e) = first(t) = first(f)
也由(4)明顯易得:
fisrt(t′t^
t′) =
同理(2)
fisrt(e′e^
e′) =
因為e是開始符,並且由(5)得到follow(e) =
由(1)可得 follow(e′e^
e′) = follow(e)
由(2)可得follow(t)中一定有first(e′e^
e′)
所有follow(t)中一定有』+』
且first(e′e^
e′)中存在ϵ
\epsilon
ϵ,並且(1)產生式的左邊是e
所以follow(t)=
所以follow(t′t^
t′) = follow(t)
有(3),(4)可得
follow(f) =
編譯原理 First集和Follow集
剛學first集和follow集的時候,如果上課老師沒有講明白或者自己沒聽明白,自己看的時候還真是有點難理解,不過結合著具體的題目可以理解的更快。先看一下兩種集合的求法 first集合的求法 first集合最終是對產生式右部的字串而言的,但其關鍵是求出非終結符的first集合,由於終結符的first...
編譯原理 FIRST集與FOLLOW集
first集合是對產生式右部的字串而言的,求取的是非終結符vt 或終結符 空字元 文法符號串 的開始符號集合,集合中包含的是由左部非終結符vt推導得到的終結符vn或空字元 以 表示乙個文法的字串,first 表示由 推導出的串的首個終結符或空字元組成的集合。規則 求文法符號x的first x 直到沒...
編譯原理 First集和Follow集的求法
自上而下分析 first集求法 first集合最終是對產生式右部的字串而言的,但其關鍵是求出非終結符的first集合,由於終結符的first集合就是它自己,所以求出非終結符的first集合後,就可很直觀地得到每個字串的first集合。1.直接收取 對形如u a 的產生式 其中a是終結符 把a收入到f...