编译原理-First集和Follow集
刚学first集和follow集的时候,如果上课老师没有讲明白或者自己没听明白,自己看的时候还真是有点难理解,不过结合着具体的题目可以理解的更快。
先看一下两种集合的求法:
First集合的求法:
1. 直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U)中
2. 反复传送:对形入U-P…的产生式(其中P是非终结符),应把First(P)中的全部内容传送到First(U)中。

Follow集合的求法:
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)中)


Follow(A)={b,c}(最终的集合要去掉ε) 同理Follow(B)={c}。
编译原理-First集和Follow集的更多相关文章
- 编译原理 First集和Follow集的求法
转载地址 https://blog.csdn.net/Alexander_Frank/article/details/51280798 自上而下分析: FIRST集求法 First集合最终是对产生式右 ...
- 编译原理LL1文法Follow集算法实现
import hjzgg.first.First; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set ...
- 求FIRST集和FOLLOW集
花了点时间弄了个大概,希望对和我一样的人有所帮助. 文法如下: E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|id ...
- FIRST集和FOLLOW集,FIRSTVT集和LASTVT集的求法
学习编译原理时, 这几个集合相信大家并不陌生:FIRST.FOLLOW.FIRSTVT.LASTVT. 其中First和Follow是一对,而Firstvt和Lastvt是一对. 它们的作用分别是: ...
- 编译原理LR(0)项目集规范族的构造详解
转载于https://blog.csdn.net/johan_joe_king/article/details/79051993#comments 学编译原理的时候,感觉什么LL(1).LR(0).S ...
- FIRST集和FOLLOW集
省略号代表其他相关产生式得出的终结符号,一开始的时候,省略号里面是没有的 求FIRST集 情况壹 如果A只在→的右边出现,那么FIRST(A)={A},例子M→α,FIRST(α)={α} 情况 ...
- 编译原理: FIRST(x) FOLLOW(x) SELECT(x)的计算
目录 First计算 Follow计算 Select计算 已知文法G[S]: S→MH|a H→LSo|ε K→dML|ε L→eHf M→K|bLM 判断G是否是LL(1)文法. First计算 F ...
- 编译原理 First,Follow,select集求法
参考:https://blog.csdn.net/CooperNiu/article/details/78524688
- 编译原理 LL1文法First集算法实现
import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.TreeMap ...
随机推荐
- StringBuilder、StringBuffer、String区别
相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天重新把这个概念给大家复习一下,顺便牵出 J2 ...
- Angular5学习笔记 - 创建、运行、发布项目(一)
一.安装脚手架 npm install -g cnpm --registry=https://registry.npm.taobao.org #安装阿里镜像 npm install -g @angul ...
- Linux驱动 - 多线程之 完成量
Linux 系统提供了一种比信号量更好的同步机制,即完成量(completion ,它用于一个执行单元等待另一个执行单元执行完某事. Linux 系统中与 completion 相关的操作主要有以下 ...
- (转)AppCan中调用系统浏览器打开网页
<!DOCTYPE html> <html> <head> <style>body{ background:#fff; font-size:30px;} ...
- minidump-DMP文件的生成和使用
转载地址点击打开链接 1.生成dmp的程序 #include <dbghelp.h> #pragma comment(lib, "dbghelp.lib") //设 ...
- 2018年长沙理工大学第十三届程序设计竞赛 J杯子
链接:https://www.nowcoder.com/acm/contest/96/J来源:牛客网 杯子 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...
- Pythonb编码规范
本编码规范是对知道创宇研发技能表中提供的PythonCodingRule.pdf文档进行凝练和总结出来的结果,感谢知道创宇的Geek精神与分享精神 此规范较为严格,严格规定了编码格式和命名规则,仅适于 ...
- 2015.3.3 VC6调用dll
用VC新建一对话框工程,在一按钮点击事件中添加如下代码: typedef void (WINAPI * TESTDLL)(); HINSTANCE hmod; hmod = ::LoadLibrary ...
- paramiko分开执行多条命令 不像之前一样使用\n
#!/usr/bin/env python#-*- encoding -*- import paramiko transport = paramiko.Transport(('192.168.11.1 ...
- 问题:C#根据生日计算属相;结果:C#实现根据年份计算生肖属相的方法
这篇文章主要介绍了C#实现根据年份计算生肖属相的方法,涉及C#数组与字符串的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#实现根据年份计算生肖属相的方法.分享给大家供大家 ...