文法的FIRST集

求文法的FIRST集和FOLLOW集的步骤如下:

  1. 求FIRST集
  • 如果符号是终结符,则FIRST集合为该终结符本身。
  • 如果符号是非终结符,则将该非终结符可以推导出的所有串的FIRST集合合并,得到该非终结符的FIRST集合。
  • 如果一个非终结符可以推导出ε,则将ε加入该非终结符的FIRST集合。
  • 求FOLLOW集
  • 将#(表示输入串的结束符)加入文法开始符号的FOLLOW集。
  • 如果存在一个产生式A->αB,则将B的FIRST集(除去ε)加入A的FOLLOW集。
  • 如果存在一个产生式A->αB或A->αBβ,且B可以推导出ε,则将A的FOLLOW集加入B的FOLLOW集。

举例说明:

求FIRST集和FOLLOW集


文法:S → aAB | bBA

A → ε | cC

B → ε | dD

C → e | ε

D → f | ε

求解:

FIRST(S)={a, b}

FIRST(A)={ε, c, e}

FIRST(B)={ε, d, f}

FIRST(C)={e, ε}

FIRST(D)={f, ε}

FOLLOW(S)={#}

FOLLOW(A)={b, f, #}

FOLLOW(B)={a, c, #}

FOLLOW(C)={d, #}

FOLLOW(D)={b, #}

求FIRST集和FOLLOW集


文法:S → Aa | bB

A → c | ε

B → Cd | ε

C → e | ε

D → f | ε

求解:

FIRST(S)={b, c, e}

FIRST(A)={c, ε}

FIRST(B)={e, f, ε}

FIRST(C)={e, ε}

FIRST(D)={f, ε}

FOLLOW(S)={#}

FOLLOW(A)={a, #}

FOLLOW(B)={a, #}

FOLLOW(C)={d, #}

FOLLOW(D)={d, #}

求FIRST集和FOLLOW集


文法:S → ABa | bB

A → cA | ε

B → Bd | ε

C → e | ε

D → f | ε

求解:

FIRST(S)={b, c, e}

FIRST(A)={c, ε}

FIRST(B)={d, ε}

FIRST(C)={e, ε}

FIRST(D)={f, ε}

FOLLOW(S)={#}

FOLLOW(A)={a, #}

FOLLOW(B)={a, #}

FOLLOW(C)={d, #}

FOLLOW(D)={d, #}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部