省略号代表其他相关产生式得出的终结符号,一开始的时候,省略号里面是没有的
 
求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. 【转】c#文件操作大全(一)

    1.创建文件夹//using System.IO;Directory.CreateDirectory(%%1); 2.创建文件//using System.IO;File.Create(%%1); 3 ...

  2. evaluateScript--evaluatePopoverScript--区别

    appcan.window.evaluateScript({})              //window.open()页面之间使用 appcan.window.evaluatePopoverScr ...

  3. php 用户验证的简单示例

    发布:thebaby   来源:net     [大 中 小] 本文介绍下,在php中,进行用户登录验证的例子,这个是基于WWW-Authenticate登录验证的实例,有需要的朋友参考下吧. 大家是 ...

  4. javascript进阶——分离式DOM脚本编程

    编写分离式(unobstrusive)代码意味着对HTML内容的完全分离:数据来自服务器端,javascript代码用来动态化和交互.这种分离的好处是在不同浏览器之间使用是可以完全降级或升级运行,对于 ...

  5. windows下常用快捷键

    windows下常用快捷键: 显示桌面: win徽标+D 打开资源管理器: win徽标+E 打开任务管理器: Ctrl+Alt+delete 任务切换: Alt+Tab 应用程序中窗口之间的切换: C ...

  6. NSAssert使用摘抄

    #define NSAssert(condition, desc, ...) 只有条件condition满足,才会执行下一个语句,否则输出断言错误. 例如: NSAssert(1 != 2, @&qu ...

  7. jersey post提交到 ContainerRequestFilter 而HttpServletRequest获取不到数据(转)

     jersey post提交到 ContainerRequestFilter 而HttpServletRequest获取不到数据 问题:在serverfilter request获取不到post提交的 ...

  8. 用jQuery在IFRAME里取得父窗口的某个元素的值

    收集网上的一些示例: 用jQuery在IFRAME里取得父窗口的某个元素的值 只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮 $(window. ...

  9. int([x[, base]]) : 将一个字符转换为int类型,base表示进制

    int([x[, base]]) : 将一个字符转换为int类型,base表示进制 >>> int(-12) -12 >>> int(-12.00) -12 > ...

  10. Burp Suite Walkthrough(英文版)

    Burp Suite is one of the best tools available for web application testing. Its wide variety of featu ...