省略号代表其他相关产生式得出的终结符号,一开始的时候,省略号里面是没有的
 
求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. CSS浮动特性总结

    1.假设现在CSS中没有浮动(float)属性,那么会变成一个什么样子.我们会发现,目前流行采用浮动方法实现的无论是分栏布局,还是列表排列我们都可以用其他一些CSS属性(不考虑table)代替实现,唯 ...

  2. PHPExcel说明

    下面是总结的几个使用方法include 'PHPExcel.php';include 'PHPExcel/Writer/Excel2007.php';//或者include 'PHPExcel/Wri ...

  3. 百度地图API应用实践(一) —— 栅格图(草稿)

    概述 运用百度地图JS API,实现了在百度地图上绘制栅格并按统计值渲染栅格颜色.实现的过程是不断补习的过程,其中用到一些技术,是个人首次尝试.包括:(1)简单的jQuery语法,并实现Ajax:(2 ...

  4. Ms SQLServer中的Union和Union All的使用方法和区别

    Ms SQLServer中的Union和Union All的使用方法和区别 SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 ...

  5. grep线上环境精典案例后续

    请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答). 自己的方法: [root@nginx_back ~]# ifconfig eth ...

  6. PythonCrawl自学日志(4)

    2016年9月22日10:34:02一.Selector1.如何构建(1)text构建: body = '<html><body><span>good</sp ...

  7. 编译报错GLIBCXX_3.4.15 clock_gettime@@GLIBC_2.2

    GLIBCXX_3.4.15 升级gcc,g++编译器 clock_gettime@@GLIBC_2.2 链接库时加-lrt

  8. vim emmet配置

    http://nerd-is.in/2013-12/learning-vim-again-1-install-vundle/ http://nerd-is.in/2013-12/learn-vim-a ...

  9. hadoop完全分布式安装(转)

    1 安装Vmware WorkStation软件 有些人会问,为何要安装这个软件,这是一个VM公司提供的虚拟机工作平台,后面需要在这个平台上安装linux操作系统.具体安装过程网上有很多资料,这里不作 ...

  10. to debug asp.net mvc4

    Go to Tools -> Options -> Debugger -> General Uncheck the option Enable Just My Code (Manag ...