【编译Chap4】求first集、follow集例题

第一题
在这里插入图片描述
答案:
在这里插入图片描述

在这里插入图片描述

第二题

在这里插入图片描述
答案:
first:
A:a,b,c,d,g
B:b,ε
C:a,c,d
D:d,ε
E:c,g

follow:

不要忘记$
在这里插入图片描述

求first非常容易错,知乎有很好的方法论:

  1. 若X->a…,则将终结符a加入FIRST(X)中;(注意非终结符的情况)
  2. 若X->e ,则将终结符e加入FIRST(X)中(e表示空集);
  3. 若 X->BC…D,则将First(B)所有元素(除了空集)加入First(X),然后检测First(B),若First(B)中不存在空集, 即e,则停止,若存在则向B的后面查看,将First(C)中所有元素(除了空集)加入First(X),然后再检测First(C)中是否有e…直 到最后,若D之前的所有非终结符的First集中都含有e,则检测到D时,将First(D)也加入First(X),若First(D)中含有e,则将 e加入First(X)。

总之看到epsilon要继续往后找,直到没有epsilon或能确定X可置空为止。

再一个简单例子,下面的,不能因为A的first集是epsilon,S的第一个符号是A,所以S的first集中就是epsilon,这是不对的,first集中有epsilon代表该符号可置空,而在下面这个例题中S推不出空。所以此时应该向后找,A的后面是a,a的first是本身a,到这里就可以停止了。

在这里插入图片描述

第三题
在这里插入图片描述
first:
S: a,b,ε
A:a,b
B:a,b

follow:
在这里插入图片描述
第四题(2010期末A卷第二题)
在这里插入图片描述
第五题(lws 模拟试卷一 第二题)

在这里插入图片描述

在这里插入图片描述

第六题

在这里插入图片描述

ref:
https://blog.csdn.net/Baron_wu/article/details/84994254
https://blog.csdn.net/RENSRM/article/details/111595754
https://zhuanlan.zhihu.com/p/268555826

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值