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

先看一下两种集合的求法:

  First集合的求法:


      First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。
    1.  直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U)中
    2.  反复传送:对形入U-P…的产生式(其中P是非终结符),应把First(P)中的全部内容传送到First(U)中。
,如果还不清楚看一下下面几张PPT

  Follow集合的求法:


      Follow集合是针对非终结符而言的,Follow(U)所表达的是句型中非终结符U所有可能的后随终结符号的集合,特别地,“#”是识别符号的后随符。
    1.  直接收取:注意产生式右部的每一个形如“…Ua…”的组合,把a直接收入到Follow(U)中。
    2.直接收取:对形如“…UP…”(P是非终结符)的组合,把First(P)除ε直接收入到Follow(U)中。
    3.反复传送:对形如P-…U的产生式(其中U是非终结符),应把Follow(P)中的全部内容传送到Follow(U)中。(或 P-…UB且First(B)包含ε,则把First(B)除ε直接收入到Follow(U)中,并把Follow(P)中的全部内容传送到Follow(U)中)

     例1:判断该文法是不是LL(1)文法,说明理由 S→ABc A→a|ε B→b|ε?
First集合求法就是:能由非终结符号推出的所有的开头符号或可能的ε,但要求这个开头符号是终结符号。如此题A可以推导出a和ε,所以FIRST(A)={a,ε};同理FIRST(B)={b,ε};S可以推导出aBc,还可以推导出bc,还可以推导出c,所以FIRST(S)={a,b,c}。  
Follow集合的求法是:紧跟随其后面的终结符号或#。但文法的识别符号包含#,在求的时候还要考虑到ε。 具体做法是把所有包含你要求的符号的产生式都找出来,再看哪个有用。 Follow(S)={#}(因为S不在产生式的右部,所以不会出现Ua的组合,则集合元素为#) 如求A的,产生式:S→ABc A→a|ε ,但只有S→ABc 有用(因为A在产生式的右部)。跟随在A后年的终结符号是FIRST(B)={b,ε},当FIRST(B)的元素为ε时,跟随在A后的符号就是c,所以 Follow(A)={b,c}(最终的集合要去掉ε) 同理Follow(B)={c}。

转载于:https://www.cnblogs.com/henuliulei/p/10666498.html

编译原理-First集和Follow集相关推荐

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

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

  2. 最全!最完整的求first集和follow的代码!!!编译原理 FIRST集和FOLLOW集的求法 代码,程序,实验报告

    DEV C++ 项目实现 不会建项目的看这个-->如何创建项目 代码链接:https://pan.baidu.com/s/1VNdrSMXaKu3HI0UQ_TInUQ 提取码:b1qz 使用教 ...

  3. [编译原理]FIRST集合FOLLOW集的介绍和求解

    一.定义 1.FIRST集:看产生式左部 FIRST(α) = {a | α ⇒∗\stackrel{*}\Rightarrow⇒∗a···,a∈VTV_{T}VT​} FIRST(α)是α的所有可能 ...

  4. 如何求FIRST集和FOLLOW集

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

  5. 【编译原理】FIRST集和FOLLOW集构造法速学

    编译原理速成大法 FIRST集和FOLLOW集构造法速成 FIRST FOLLOW FIRST集和FOLLOW集构造法速成 例:对于文法G(E) 首先像E,T,E',F这样的就是非终结符 +,*, ε ...

  6. 【编译原理笔记05】语法分析:FIRST集和FOLLOW集的计算,[非]递归的预测分析法,预测分析中的错误处理

    本次笔记内容: 4-4 FIRST集和FOLLOW集 4-5 递归的预测分析法 4-6 非递归的预测分析法 4-7 预测分析法中的错误处理 本节课幻灯片,见于我的 GitHub 仓库:第5讲 语法分析 ...

  7. 【编译原理】First集和Follow集简易解释(偏人话)

    \ε:非ε元素 First集和Follow集是集合 First集规则(相应字母在->左边,查找->右边第一个东西) ①A->aB,a加进First(A): (->右边第一个是终 ...

  8. FIRST集和FOLLOW集的构造

    FIRST集和FOLLOW集的定义 注意:1:FIRST集的定义中\(\alpha和\beta\)可以是终结符也可以是非终结符.2:FOLLOW集的定义中\(\mu和\beta\)可以是终结符也可以是 ...

  9. [编译原理] 期末复习,求FIRST集和FOLLOW集。简单易懂,例题讲解。

    1.终结符和非终结符 终结符:ε.a.b.c.d.+.-.*./.,等非大写字母 非终结符:A.B.C.D.S.- 大写字母. 2.求first集 核心理念:first(A) A能推出的第一个是什么. ...

最新文章

  1. 240个jquery插件
  2. 使用Jenkins自动远程调用压测机实现不同用户场景下的并发测试
  3. SystemImager自动化安装Linux系统(下)
  4. Spring Cloud Gateway 原生的接口限流该怎么玩
  5. Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function
  6. ORA-01940:cannot drop a user that is currently connected
  7. 如何使用DNS反向映射来扫描IPv6地址?
  8. springmvc处理器及前端控制器介绍
  9. 人工智能与机器学习的关系---人工智能工作笔记0013
  10. 【待填坑】LG_3239_[HNOI2015]亚瑟王
  11. excel转置怎么操作_Excel八问八答,新手入门必修课
  12. AndroidSDK目录和源码目录详解
  13. 2021阿里巴巴校招笔试题
  14. filtering_audio.c/filtering_video.c 解读
  15. vba oracle 乱码,【VBA研究】用VBA实现excel与Oracle数据库交互
  16. Ajax之【Ajax异步实现步骤】
  17. 教你秒建受信任的本地 SSL 证书,彻底解决开发测试环境的无效证书警告烦恼!...
  18. 错误 不存在从 “std::string“ 到 “LPCSTR“ 的适当转换函数
  19. 【福利季】《手机历史漫谈》
  20. 工业互联网-企业数据打通解决方案

热门文章

  1. SHELL编程之执行环境----邹立巍的博客
  2. 学习AxureRP的成长之路
  3. 自定义Dialog(一)
  4. 应用程序0xc0150002 错误
  5. c#3.0加入的一些新特性——泛型集合
  6. C#中as与is的用法
  7. c#_String.Split 方法进阶篇
  8. 833 计算机学科专业基础综合,2017年西安电子科技大学计算机学院833计算机学科专业基础综合考研仿真模拟题...
  9. 数据增强_开源算法FMix:用于深度学习中增强混合样本数据增强
  10. 菏泽中考报名不报计算机,2020菏泽中考报名人数:94559人