编译原理必考大题:first集和follow集的求法

求first集

first(a)就是从a可能推导出的所有开头终结符号或ξ.

三个例子掌握first集构造规则

1️⃣ X=a,则FIRST(X)={a}

X直接能推导出终结符号,终结符号加入FIRST集

2️⃣ X→aB|ξ,则FIRST={a,ξ}

X还能推导出ξ,把ξ也加入到FIRST集

3️⃣X→BCD B→a|ξ C→b|ξ D→c|ξ 则FIRST(X)={a,b,c,ξ}

X首先推出B,意味着B的FIRST集应该加入到X的FIRST集,但是由于B能推出ξ,所以X→BCD,可以变为X→CD,所以C的FIRST集应该加入到X的FIRST集,同理D也是

first集 实战题目

first集的核心做题简记:构造first集,我们要盯住生成式的左边,即什么产生了什么中前一个什么.

实战题目一

在这里插入图片描述

实战题目二

在这里插入图片描述

求follow集

follow(A)就是在所有句型中出现在紧接A之后出现的终结符号或#

注意:follow集合中无ξ

三个例子掌握follow集构造规则

1️⃣ 对于文法的开始符号A,在它的follow集中加入‘#’

记忆即可

2️⃣ 形如B→aAβ的形式但β不是ξ,如A→aC B→bACe C→dB|ξ,follow(A)=First(Ce)={d,e}

看产生式的右部,出现A的地方,它后面跟着的一切非ξ符号都加入到First集合中,这个First集合就是follow(A),问题就转变成了求first集

简单理解为紧接的是不为空,求first集

3️⃣形如B→aA或B→aAβ的形式但β是ξ,A→aC B→bACe C→dB|ξ,则follow©=follow(A)Ue={d,e}

A后为空的时候,意味着,B产生A,B的follow集是A follow集的子集,故要取并集

简单理解为紧接的是为空,follow(B)加入follow(A)

follow集 实战题目

实战题目一

在这里插入图片描述

实战题目二

在这里插入图片描述

别把#号忘了,这个很重要

实战题目三

在这里插入图片描述

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小徐要考研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值