省略号代表其他相关产生式得出的终结符号,一开始的时候,省略号里面是没有的
 
求FIRST集
情况壹  如果A只在→的右边出现,那么FIRST(A)={A},例子M→α,FIRST(α)={α}
情况貳  对于A→BCDEFG,
               一 如果无B→ε,那么FIRST(A)={……}∪FIRST(B),接着求FIRST(B)
               二 如果有B→ε,那么FIRST(A)={……}∪(FIRST(B)-{ε})∪FIRST(CDEFG),接着分别求FIRST(B)-{ε}、FIRST(CDEFG)
情况叁 如果G→ε,那么FIRST(G)={……}∪{ε}
 
求FOLLOW集
情况壹 如果S是开始符号(一般是第一个产生式),那么FOLLOW(S)={……,$} 
情况贰     一 如果有产生式A→αBCD,且ε不属于FIRST(CD)那么FOLLOW(B)={……}∪(FIRST(CD))
             二 如果有产生式A→γBCD,且ε属于FIRST(CD)那么FOLLOW(B)={……}∪(FIRST(CD)-{ε})∪FOLLOW(A)
情况叁  如果有产生式M→CDB,那么FOLLOW(B)={……}∪FOLLOW(M) 
 
 
例子
对于文法G[A]
A→BCc|gDB   
B→bCDE|ε
C→DaB|ca
D→dD|ε
E→gAf|c
 
FIRST集先看→左边
FIRST(A)=FIRST(BCc)∪FISRT(gDB)
               =(FIRST(B)-{ε})∪FIRST(Cc)∪{g}
              ={b}∪FIRST(DaBc)∪FIRST(cac)∪{g} 
              ={b}∪FIRST(dDaBc)∪FIRST(aBc)∪{c}∪{g}
              ={b,d,a,c,g}
FIRST(B)=FIRST(bCDE)∪FIRST(ε)
              ={b,ε}
FIRST(C)=FIRST(DaB)∪FIRST(ca)
               =FIRST(dDaB)∪FIRST(aB)∪{c}     相当于(FIRST(D)-{ε})∪FIRST(aB)∪{c}
              ={d,a,c}
FIRST(D)=FIRST(dD)∪FIRST(ε)
               ={d,ε}
FIRST(E)=FIRST(gAf)∪FIRST(c)={g,c}
-------------------------------------------------------------------------------------------------------
FOLLOW集先看→右边
FOLLOW(A)={$}∪{f}={f,$}
FOLLOW(B)=FIRST(Cc)∪FOLLOW(A)∪FOLLOW(C)
                      ={d,a,c}∪{f,$}∪FOLLOW(C)先去求FOLLOW(C)再来补
                      ={a,c,d,g,f,$}
FOLLOW(C)={c}∪FIRST(DE)
                      ={c}∪{d}∪FIRST(E)
                     ={c,d,g}
FOLLOW(D)=(FIRST(B)-{ε})∪FOLLOW(A)∪FIRST(E)∪{a}∪FOLLOW(D)
                     ={b}∪{f,$}∪{g,c}∪{a}
                     ={a,b,g,c,f,$}
FOLLOW(E)=FOLLOW(B)={a,c,d,g,f,$}

FIRST集和FOLLOW集的更多相关文章

  1. 编译原理-First集和Follow集

    刚学first集和follow集的时候,如果上课老师没有讲明白或者自己没听明白,自己看的时候还真是有点难理解,不过结合着具体的题目可以理解的更快. 先看一下两种集合的求法: First集合的求法:   ...

  2. 求FIRST集和FOLLOW集

    花了点时间弄了个大概,希望对和我一样的人有所帮助.   文法如下: E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|id ...

  3. 编译原理 First集和Follow集的求法

    转载地址 https://blog.csdn.net/Alexander_Frank/article/details/51280798 自上而下分析: FIRST集求法 First集合最终是对产生式右 ...

  4. FIRST集和FOLLOW集,FIRSTVT集和LASTVT集的求法

    学习编译原理时, 这几个集合相信大家并不陌生:FIRST.FOLLOW.FIRSTVT.LASTVT. 其中First和Follow是一对,而Firstvt和Lastvt是一对. 它们的作用分别是: ...

  5. 怎样求FIRST集、FOLLOW集和SELECT集

    一,要知道什么是终结符和非终结符. 终结符:通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导. 非终结符:不是终结符的都是非终结符.(非男即女,呵呵) 如:A-->B,则 ...

  6. LUA中将未分类数据分为测试集和训练集

    require 'torch' require 'image' local setting = {parent_root = '/home/pxu/image'} function list_chil ...

  7. 简单的FOLLOW集演示程序

    /* * 该程序用于计算某个非终结符的 FOLLOW 集合 * RexfieldVon * 2013年6月30日16:02:47 */ #include <stdio.h> #includ ...

  8. 【编译原理】语法分析LL(1)分析法的FIRST和FOLLOW集

    近来复习编译原理,语法分析中的自上而下LL(1)分析法,需要构造求出一个文法的FIRST和FOLLOW集,然后构造分析表,利用分析表+一个栈来做自上而下的语法分析(递归下降/预测分析),可是这个FIR ...

  9. 机器学习入门06 - 训练集和测试集 (Training and Test Sets)

    原文链接:https://developers.google.com/machine-learning/crash-course/training-and-test-sets 测试集是用于评估根据训练 ...

随机推荐

  1. java 子类的实例化和代码块初始化过程

    1,子类的实例化 1,子父类中的构造函数的特点. 在子类构造对象时,发现,访问子类构造函数时,父类也运行了. 为什么呢? 原因是:在子类的构造函数中第一行有一个默认的隐式语句. super(); 子类 ...

  2. (转载)delphi 中如何调用sql 存储过程

    delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...

  3. 2.MVC框架开发(视图开发----基础语法)

    1.区别普通的html,在普通的html中不能将控制器里面的数据展示在html中. 在MVC框架中,它提供了一种视图模板(就是结合普通的html标签并能将控制器里传出来的数据进行显示) 视图模板特性: ...

  4. 视频边下边播--缓存播放数据流-b

    google搜索“iOS视频变下边播”,有好几篇博客写到了实现方法,其实只有一篇,其他都是copy的,不过他们都是使用的本地代理服务器的方式. 原理很简单,但是缺点也很明显,需要自己写一个本地代理服务 ...

  5. python 批量修改图片大小

    一个文件夹下面有好多图片格式是jpg大小是1920*1080,把它们处理成1280*720并按原先图片的名保存在另一路径下这里首先要找到给定路径下所有的图片文件,然后在修改图片文件的大小,这里用到PI ...

  6. 随机产生字母a--z, A-Z 的任意组合

    VERSION 1.0    引自: http://www.coderanch.com/t/134491/Security/generating-secure-tokens package demo; ...

  7. jenkin系列_调度jmeter实现分布式测试

    假设现在有 192.168.1.100(jmeter 控制器 C ).192.168.1.101(jmeter负载机 B)两台机器进行分布式测试,各个步骤如下 1. C 和B 安装jmeter,并运行 ...

  8. easyui源码翻译1.32--Tabs(选项卡)

    前言 使用$.fn.tabs.defaults重写默认值对象.下载该插件翻译源码 选项卡显示一批面板.但在同一个时间只会显示一个面板.每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他 ...

  9. javaweb学习总结(三十六)——使用JDBC进行批处理

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

  10. asp.net控件(1)Repeater

    1. 通过Repeater和数据源创建表格 <AlternatingItemTemplate>属性可以控制单元格交替显示不同的背景颜色 <table width=" sty ...