自顶向下语法分析复习总结

符集

FIRST集

原则:求FIRST(A),观察左边为A的产生式,如: A->…

情况1

A->a… (a为终结符) 则有:
F I R S T ( A ) ∋ a FIRST(A)\ni a FIRST(A)a

情况2

A->B… (B为非终结符)则有:
F I R S T ( A ) ⊇ F I R S T ( B ) FIRST(A) \supseteq FIRST(B) FIRST(A)FIRST(B)

FOLLOW集

原则:求FOLLOW(A),观察右边含有A的产生式,如:…->…A…
特别说明:若A为文法的初始符,则规定:
F O L L O W ( A ) ∋ # FOLLOW(A) \ni \# FOLLOW(A)#

情况1

S->…Aa…(a为终结符),则有:
F O L L O W ( A ) ∋ a FOLLOW(A) \ni a FOLLOW(A)a

情况2

S->…AB (B为非终结符)

情况2.1

ξ ∉ F I R S T ( B ) \xi \notin FIRST(B) ξ/FIRST(B)
F O L L O W ( A ) ⊇ F I R S T ( B ) FOLLOW(A) \supseteq FIRST(B) FOLLOW(A)FIRST(B)

情况2.2

ξ ∈ F I R S T ( B ) \xi \in FIRST(B) ξFIRST(B)
F O L L O W ( A ) ⊇ F I R S T ( B ) − { ξ } ∪ F O L L O W ( B ) FOLLOW(A) \supseteq FIRST(B)-\{\xi\} \cup FOLLOW(B) FOLLOW(A)FIRST(B){ξ}FOLLOW(B)

情况3

S->…AB(B为非终结符)

情况3.1(和2.1一样)

ξ ∉ F I R S T ( B ) \xi \notin FIRST(B) ξ/FIRST(B)
F O L L O W ( A ) ⊇ F I R S T ( B ) FOLLOW(A) \supseteq FIRST(B) FOLLOW(A)FIRST(B)

情况3.2

ξ ∈ F I R S T ( B ) \xi \in FIRST(B) ξFIRST(B)
F O L L O W ( A ) ⊇ F I R S T ( B ) − { ξ } ∪ F O L L O W ( S ) FOLLOW(A) \supseteq FIRST(B)-\{\xi\} \cup FOLLOW(S) FOLLOW(A)FIRST(B){ξ}FOLLOW(S)

情况4

S->…A,则有
F O L L O W ( A ) ⊇ F O L L O W ( S ) FOLLOW(A) \supseteq FOLLOW(S) FOLLOW(A)FOLLOW(S)

SELECT集

求SELECT(A->B),(这里的B可能是终结符也可能是非终结符)就是利用前面求出的FIRST集和FOLLOW集,要注意SELCET的括号里是一个产生式

情况1

ξ ∉ F I R S T ( B ) \xi \notin FIRST(B) ξ/FIRST(B)
S E L E C T ( A − > B ) = F I R S T ( B ) SELECT(A->B) = FIRST(B) SELECT(A>B)=FIRST(B)

情况2

ξ ∈ F I R S T ( B ) \xi \in FIRST(B) ξFIRST(B)
S E L E C T ( A − > B ) = F I R S T ( B ) − { ξ } ∪ F O L L O W ( A ) SELECT(A->B) = FIRST(B) -\{ \xi\} \cup FOLLOW(A) SELECT(A>B)=FIRST(B){ξ}FOLLOW(A)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值