Frist集和Follow集的定义课本上说的对于我们这些学渣来说真的像天书一样晦涩难懂,我就不要复制课本上的定义了,看我这篇文章的基本上是为了过期末考试,我就很简单的给大家说一下,根据老师布置的作业当作例子和大家交流一下哈。
在说Frist集和Follow集之前首先和大家说一下终结符和非终结符的区别,在编译原理中,规定(王八的腚-----规定)大写的字母为非终结符,例如A,B,Z,X,小写的字母和一些符号为非终结符,例如a,c,d,x,z,(,),*,&,^,%,$,#,@,+,-,等等。
知道了这些知识,接下来的操作就很简单啦。

Frist集

Frist集指的是这个集合中的第一个非终结符,记住一定是非终结符。
Frist集有下面这两个情况:

  1. 如果集合中的第一个字母就是小写字母或一些符号,那么它就是这个集合的Frist集。
  2. 如果集合中的第一个字母是大写字母,就要看这个大写字母的Frist集是什么,如果还是大写字母,就要继续往下看,知道遇到非终结符,这里有点嵌套的意思。
    这就是Frist集的一些情况,接下来看一个例子,遮这样能更好的知道我说的到底是个什么东西。
    **1.**用算法求下述文法的每个非终结符的Frist集
    S->Ap
    S->Bq
    A->a
    A->cA
    B->b
    B->dB
    解:
    思路:
    首先我们可以从上到下可以看出,上面的第一个字母,都是大写字母,为非终结符,这里给大家介绍一个小方法,从下面开始计算,因为下面第一个是非终结符,容易计算,
    这样我们很容易的就知道Frist( B->dB)={d},对吧,是不是很简单呢,哈哈哈。
    我们想的时候是从下面,开始写,但是我们最终要呈现出来的还得是从上往下进行写。
    我们知道了 B->dB 的Frist集为Frist( B->dB)={d},但是我们再往上看,会看到 B->b ,也是非终结符B推出来的,这样我们可以把这两个候选式的Frist集写到一块去。
    原来是:Frist( B->dB)={d}
    Frist( B->b)={b}
    变成这个样子:
    Frist(B)={d,b}
    然后通过这种方法就知道了A的Frist集怎么去做了,这里就不多加去陈述了。
    接下来我们看S的Frist集怎么去做:
    首先看S->Bq
    这个候选式的Frist集为B,但是根据定义我们知道,Frist集不能为非终结符,要为终结符,所以这里我们要看B的frist集是什么,之前我们已经进行了计算知道了Frist(B)={b,d},所以Frist(S->Bq)={b,d}。
    Frist(S->Ap)的计算方法和上面的是一样的,同样留给大家去解决。

Follow集

Follow集的计算方法有点麻烦,但是理解起来也是非常简单的,我首先列举一下求Follow集的几种情况。
求Follow集的最重要的是产生式的右边,是谁把要求Follow集的那个推出来的。

  1. 开头加#
  2. 如果要求的非终结符的后面跟着一个终结符,那么把这个终结符加到该非终结符的Follow集中去。
  3. 如果求的非终结符的后面是非终结符就要把后面非终结符的非空Frist集加到该终结符的Follow集中去。
  4. 如果求的非终结符后面没有任何符号,就要看是哪个非终结符把它推出来的,就把这个非终结符的Follow集加到要求的非终结符中去。
    下面我们来看具体的例子,有助于理解。
    S->Ap
    S->Bq
    A->a
    A->cA
    B->b
    B->dB
    求Follow(S),首先想,S是第一个,要加上#,对应情况第一条,然后再看谁把S推出来的(看产生式的右边),发现没有,那么Follow(S)={#}。
    求Follow集就从上往下看就可以了。
    求Follow(A),首先是从上往下看,谁把A推出来的。
    1.首先是S->Ap,在这个产生式中A后面有一个终结符p就把字母p加到Follow(A)中去,对应第一种情况,
    2.还有就是A->cA,A推出来了A,本身推本身没有任何意义。
    所以Follow(A)={p}
    在这里要注意的是只有要求的非终结符后面没有任何东西的时候才能看产生式右边。
    Follow(B)的做法和上述一样,这里就不多陈述。
    最后希望大家都能期末过过过!!!
    有问题评论区指出,我会积极改正的。
    这是我的个人微信号:

    本人的一个小小的公众号,如果不喜欢再这看可以去公众号哟:

    感谢支持。

编译原理之Frist集与Follow集相关推荐

  1. 编译原理之--FIRST集、FOLLOW集 和 SELECT集

    FIRST集.FOLLOW集 和 SELECT集 一.FIRST集 FIRST(A)为A的开始符或者首符号集. 1.定义: 设G=(VT,VN,S,P)是上下文无关文法 ,FIRST(α)={a|α能 ...

  2. FIRST集与FOLLOW集构造步骤

    首先,这两个集主语是候选式,是V*中的一个终结符/非终结符. 由于FOLLOW集的定义和构造步骤里面都涉及FIRST集,故先介绍FIRST集. 一.FIRST集的定义如下: FIRST(α)={a|α ...

  3. First集、Follow集

    构建First集 求First集步骤 首先,对所有非终结符A, 先设定FIRST(A)= {} (空) FIRST(A) = { t | A → tw },t为终结符,w为任意类型 然后, 对每一个产 ...

  4. 文法G[S]: S→AB S→bC A→ε A→b B→ε B→aD C→AD C→b D→aS D→c 求FIRST集,FOLLOW集。

    文法G[S]: S→AB S→bC A→ε A→b B→ε B→aD C→AD C→b D→aS D→c 求FIRST集,FOLLOW集.

  5. FIRST集、FOLLOW集 和 SELECT集

    FIRST集.FOLLOW集 和 SELECT集 一.FIRST集 FIRST(A)为A的开始符或者首符号集. 1.定义: 设G=(V T ,V N ,S,P)是上下文无关文法 ,FIRST(α)={ ...

  6. 文法G[E]: E→E+T|T ,T→T*F|F ,F→i|(E) 求FIRST集,FOLLOW集

    文法G[E]: E→E+T|T T→T*F|F F→i|(E) 求FIRST集,FOLLOW集,判定i+i * i,以及构造预测分析表.

  7. 编译原理实验-LL1语法分析器(自动生成First集、Follow集求法)java实现

    编译原理实验-LL1语法分析器(自动生成First.Follow)java 博主在做实验时,参考众多他人代码,发现bug众多,在@moni_mm代码基础上,与伙伴把能看到的BUG都做出修正,同时增添了 ...

  8. 编译原理:LL(1)文法的First集跟Follow集

    一.FIRST集 定义: ("=*>" 符号意为"经过任意步")         设G=(Vt,Vn,S,P),令G是一个不含左递归的文法, 对G的所有非 ...

  9. 如何求first集与follow集

    最近马上要步入考试周了,编译原理的这个Follow集一直令我头大啊,今天百度了下下,找到一篇文章,看了以后我瞬间就明白了如何求解Follow集~~哈哈,如果你也不知道如何求解Follow集,请看看下面 ...

  10. first集与follow集

    最近马上要步入考试周了,编译原理的这个Follow集一直令我头大啊,今天百度了下下,找到一篇文章,看了以后我瞬间就明白了如何求解Follow集~~哈哈,如果你也不知道如何求解Follow集,请看看下面 ...

最新文章

  1. 黑星什么意思_星月菩提黑星海南料什么意思
  2. mybatis默认的数据源连接池(PooledDataSource和UnPooledDataSource)
  3. Web开发中的用户角色权限设计总结
  4. Sun Cluster3.3+Oracle11g配置数据库资源问题
  5. java heroku_Heroku和Java –从新手到初学者,第2部分
  6. textbox matlab,matlab gui 编程文本框更新
  7. java颜色常量,Java FX场景构建器无法识别css自定义颜色常量(或变量)
  8. mysql创建表的默认大小_mysql InnoDB建表时设定初始大小的方法
  9. svn使用过程中遇到的问题
  10. 悦诗风吟网络营销的目标_睫毛膏营销策划方案
  11. Echarts Map地图下钻至县级
  12. 2804 最大最小数质因数
  13. 中国慕课moocpython答案_中国大学慕课moocPython编程基础章节测试答案
  14. 360浏览器打开html不能正常显示图片,“网页图片显示异常,网页图片、验证码显示不正常,经常显示不全或根本不显示”的解决方案...
  15. 同步,异步,直流电机原理
  16. 安卓平板隐藏虚拟按键_实现安卓设备虚拟按键隐藏和显示的方法和系统的制作方法...
  17. 司普沃浅谈豆角种植技术与管理方案
  18. ABAP基本数据类型
  19. 打包项目出错 Your build settings specify a provisioning profile with the UUI
  20. CREO教程——1 初始配置

热门文章

  1. Python爬取电影天堂最新发布电影下载地址
  2. 本地部署iOS应用OTA安装 Go + Goland详细实现步骤
  3. 1111111111
  4. 域名解析指向详细操作(图解)
  5. CC2530——点对点通信
  6. 生产计划排产软件如何解决生产难题?
  7. SCOI2018滚粗记
  8. 用上这个神器后,广告从此去无忧!(全平台免费支持,无需安装任何客户端软件)...
  9. 栅格布局 xs sm md lg
  10. 计算机wap怎么制作表格,如何在电脑上制作简单的表格?