- 40
- 0
- 约1.67千字
- 约 1页
- 2021-01-11 发布于浙江
- 举报
构造 FIRST集和 FOLLOW集的方法
1、构造 FIRST 集的算法
(1) 对于 G 中的每个文法符号X,为求FIRST(X),反复应用如下规则,直到集合不再增大:
① 若 X ∈VT ,则 FIRST(X)是{X}
② 若 X ∈V ,且X→aα (a∈V ) ,则{ a } FIRST(X)
N T
X→ε , 则{ε} FIRST(X)
③ 若 X-Y Y … Y Y … Y ∈P,Y ∈V ,则
1 2 i-1 i K 1 N
FIRST(Y )- {ε} FIRST(X)
1
∗
而对所有的j(1 ≤j ≤i-1), Y ∈V ,且Y ⇒ ε ,则令
j N j
FIRST(Y )- {ε} FIRST(X) (1≤j ≤i)
j
特别,当ε∈FIRST(Y ) (1≤j ≤k)时,令ε∈FIRST(X)
j
(2) 对文法 G 的任何符号串=X X …X 构造集合 FIRST()
1 2 n
① 置 FIRST(X )- {} FIRST()
1
② 若对任何 1j i-1 ,FIRST(X ) ,
j
则 FIRST(X ) - {} FIRST()
i
特别是,若所有的 FIRST(X )均含有 ,1j n ,则{} FIRST()。
j
显然,若 =则 FIRST() ={}。
2、构造 FOLLOW 集的算法
对于 G 中的每一 A ∈VN ,为构造FOLLOW(A) ,可反复使用如下的规则,直到每个
FOLLOW 集不再增大为止:
① 对于文法的开始符号 S ,令# ∈ FOLLOW(S)。
② 对于每一 A→αBβ∈P ,
令 FIRST(β) - {ε} FOLLOW(B) 。
③ 对于每一 A→αB ∈P ,
或 A→αBβ∈P ,且ε∈FIRST(β) ,
则令 FOLLOW(A) FOLLOW(B) 。
原创力文档

文档评论(0)