编译原理First与Follow集示例

编译原理First与Follow集示例

(大写字母非终结符、小写字母终结符)

first集各种情况示例:

  • 后面跟终结符
A->aB|ε
A->c
.....
First(A)={a,ε,c}
  • 后面跟非终结符
A->Ba
B->b
.....
First(A)={a}
  • 后面跟非终结符(带空)
A->Bc
B->b|ε
.....
First(A)={b,c}
注意:首先很容易推导出b
对于c是因为B->ε,当B为ε时 即A->c 此时就推出c在first集合中
  • 后面跟非终结符(不带空)
A->BC
B->b|ε
C->c|ε
.....
First(A)={b,c,ε}
注意:推导出b、c的情况与上面情况相同
对于ε,就当当B和C都为ε的情况推导。

Follow集合

三条规则:

  1. 对于开始符号,首先将$加入到Follow集中
  2. 若A->αBβ是一个产生式,则把First(β)-{ε}加入到Follow(B)中
  3. 若A->αB是一个产生式,或者A->αBβ是一个产生式且β->ε,则把Follow(A)加入到Follow(B)中

示例:

G[s]:S->aH
H->aMd
H->d
M->Ab
M->ε
A->aM
A->e
FirstFollw
First(S)={a}Follow(S)={$} r1
First(H)={a,d}Follow(H)={$} r3
First(M)={a,e,ε}Follow(M)={d}+{b} ={d,b} r2+r3
First(A)={a,e}Follow(A)={b} r2

r1r2r3表示利用到的规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值