概述
FIRST 集
- FIRST(X):可以从符号或符号串X推导出的所有串首终结符构成的集合
- 如果 X = > ∗ ε X=>^*ε X=>∗ε ,那么 ε ε ε 也在 FIRST(X) 中
计算文法符号 X X X 的 FIRST 集合
对于一个产生式 X → Y 1 Y 2 . … Y n X→Y_1Y_2.…Y_n X→Y1Y2.…Yn
(1)如果 X X X是一个终结符,那么FIRST ( X ) = { X } (X)={X} (X)={X}
(2)如果 X X X是一个非终结符,且 X → Y 1 Y 2 . … Y n X→Y_1Y_2.…Y_n X→Y1Y2.…Yn
- 如果 Y 1 Y_1 Y1 是一个终结符,那么FIRST ( X ) = { Y 1 } (X)={Y_1} (X)={Y1}
- 如果
Y
1
Y_1
Y1 是非终结符,那么
- 向 FIRST ( X ) (X) (X)加入 FIRST ( Y 1 ) (Y_1) (Y1)中所有的非 ε ε ε 符号
- 如果 ε ε ε 在 FIRST ( Y 1 ) (Y_1) (Y1)中,再加入FIRST ( Y 2 ) (Y_2) (Y2)中的所有非 ε ε ε 符号;如果 ε ε ε 在 FIRST ( Y 1 ) (Y_1) (Y1)和 FIRST ( Y 2 ) (Y_2) (Y2)中,再加入 FIRST ( Y 3 ) (Y_3) (Y3)中的所有非 ε ε ε 符号,以此类推…
- 最后,如果对所有的 X X X, ε ε ε 都在FIRST ( X ) (X) (X)中,那么将 ε ε ε 加入到 FIRST ( X 1 X 2 . … X n ) (X_1X_2.…X_n) (X1X2.…Xn)中
(3)如果 X → ε X→ε X→ε,那么将 ε ε ε 加入FIRST ( X ) (X) (X)中
(4)若存在其它 X X X 的候选式,则重复应用上述过程
示例:
- 式子②④⑤的候选式都是以终结符开头(即 Y 1 Y_1 Y1是终结符),故他们的FIRST集中分别包含了+、*、(
- 式子②④的候选式还可以推导出 ε ε ε ,故他们的FIRST集中包含了 ε ε ε
- 式子③的候选式以非终结符开头(即 Y 1 Y_1 Y1是非终结符),故式子③的FIRST集加入了 FIRST ( F ) (F) (F)中所有的非 ε 符号,同理可求式子①的FIRST集
- 若将
E
→
T
E
′
E→TE'
E→TE′ 改写成
E
→
E
′
T
E→E'T
E→E′T (下面简称为式子⑥)
- 式子⑥的FIRST集加入了 FIRST ( E ′ ) (E') (E′)中所有的非 ε 符号
- ε 在 FIRST ( E ′ ) (E') (E′)中,再加入了 FIRST ( T ) (T) (T)中所有的非 ε 符号
- FIRST ( T ) (T) (T)中没有 ε ,结束。
- 故此时 FIRST ( E ) = { + , ( , i d } (E)={+,(,id} (E)={+,(,id}
计算串 X 1 X 2 . … X n X_1X_2.…X_n X1X2.…Xn 的FIRST集合
(1)向 FIRST ( X 1 X 2 . … X n ) (X_1X_2.…X_n) (X1X2.…Xn)加入 FIRST ( X 1 ) (X_1) (X1)中所有的非 ε ε ε 符号
(2)如果 ε ε ε 在 FIRST ( X 1 ) (X_1) (X1)中,再加入FIRST ( X 2 ) (X_2) (X2)中的所有非 ε ε ε 符号;如果 ε ε ε 在 FIRST ( X 1 ) (X_1) (X1)和 FIRST ( X 2 ) (X_2) (X2)中,再加入 FIRST ( X 3 ) (X_3) (X3)中的所有非 ε ε ε 符号,以此类推…
(3)最后,如果对所有的 X X X, ε ε ε 都在FIRST(X)中,那么将 ε ε ε 加入到 FIRST ( X 1 X 2 . … X n ) (X_1X_2.…X_n) (X1X2.…Xn)中
参考地址:
https://www.icourse163.org/learn/HIT-1002123007?tid=1003246005#/learn/announce
最后
以上就是霸气网络为你收集整理的编译原理 —— FIRST集FIRST 集计算文法符号 X X X 的 FIRST 集合计算串 X 1 X 的全部内容,希望文章能够帮你解决编译原理 —— FIRST集FIRST 集计算文法符号 X X X 的 FIRST 集合计算串 X 1 X 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复