first集和follow集的计算

编译原理 | 求FIRST集和FOLLOW集的具体过程 FIRST集的构造: 计算所有文法符号X的FIRST(X),直到每个FIRST集合不再增大为止. (1) 若X∈VT,那么FIRST(X)={X}. (2) 若X→ε是产生式,那么把ε加入FIRST(X). (3) 如果X是非终结符,且X→Y1Y2…Yk是产生式,若对某个i, a属于FIRST(Yi),并且ε属于所有的FIRST(Y1),FIRST(Y2), …,FIRST(Yi-1),即Y1... 阅读详情

纯属瞎写借鉴,我觉得很好懂,给那些不懂的人看

计算FIRST集:
① 根据定义计算:
 对每一文法符号X∈V 计算FIRST(X)
(a) 若X∈VT,则FIRST(X)={X}
(b) 若X∈VN,且有产生式X→a…,a∈VT, 则 a∈FIRST(X)
(c) 若X∈VN,X→ε,则ε∈FIRST(X)
(d) 若X, Y1,Y2,…,Yn都∈VN,且有产生式X→Y1 Y2 …
 Yn;当Y1 Y2 … Yi-1都ε时,(其中1≤i≤n),则FIRST(Y1)-
{ε}、FIRST(Y2) -{ε} 、…、FIRST(Yi-1)- {ε},FIRST(Yi)
 都包含在FIRST(X)中
(e) 当(d)中所有Yi   ε,(i=1,2,…n),则
 FIRST(X)=FIRST(Y1)∪FIRST(Y2)∪…∪FIRST(Yn)∪{ε}
(f)反复使用上述(b)~(e)步直到每个符号的FIRST集合不再增
 大为止
② 由关系图法求文法符号的FIRST集:
(a)每个文法符号对应图中一个结点,对应终结符的结点时用
 符号本身标记,对应非终结符的结点用FIRST(A)标记。这
 里A表示非终结符
(b)如果文法中有产生式A→αXβ,且α  ε,则从对应A的
结点到对应X的结点连一条箭弧
(c)凡是从FIRST(A)结点有路径可到达的终结符结点所标记的
 终结符都为FIRST(A)的成员
(d)由判别步骤1)确定ε是否为某非终结符FIRST集的成员,
 若是则将ε加入该非终结符的FIRST集中
这里写图片描述

这里写图片描述

3)计算FOLLOW集:
① 根据定义计算:
  对文法中每一 A∈VN 计算 FOLLOW(A)
(a)设S为文法中开始符号,把{#}加入FOLLOW(S)中(这里“#”为句子括号)
(b)若A→αBβ是一个产生式,则把FIRST(β)的非空元素加入
 FOLLOW(B)中。
 如果β  ε则把FOLLOW(A)也加入FOLLOW(B)中
(c)反复使用(b)直到每个非终结符的FOLLOW集不再增大为止

② 由关系图法求非终结符的FOLLOW集:
(a)文法G中的每个符号和“#”对应图中的一个结点,对应终结符和“#”的结点用符号本身标记。对应非终结符的结点(如A∈VN)则用FOLLOW(A)或FIRST(A)标记
(b)从开始符号S的FOLLOW(S)结点到“#”号的结点连一条箭弧
(c)如果文法中有产生式A→αBβX,且β  ε,则从
FOLLOW(B)结点到FIRST(X)结点连一条弧,当X∈VT时,则
与X相连
(d) 如果文法中有产生式A→αBβ,且β  ε,则从
FOLLOW(B)结点到FOLLOW(A)结点连一条箭弧
(e) 对每一FIRST(A)结点如果有产生式A→αXβ,且
α  ε, 则从FIRST(A)到FIRST(X)连一条箭弧
(f)凡是从FOLLOW(A)结点有路径可以到达的终结符或“#”号的结点,其所标记的终结符或”#”号即为FOLLOW(A)的成员
这里写图片描述

这里写图片描述

FIRST 和 FOLLOW求解 (一)FIRST集合 概念:FIRST(α)定义为可以从α推导得到的串的首符号的串的集合。换言之,就是由非终结符推出的所有的开头符号(终结符)或者是ε,即如果α=*=>ε,那么ε也在FIRST(α)中. 1.FIRST的计算方法 计算单个文法符号X的FIRST(X)时,不断应用以下规则,直到没有新的终结符或者是ε加入。 (1)如果X是终结符号,那么FIRST(X)={X} (2)如果X是... 阅读详情

相关推荐

FIRST集和FOLLOW集

编译原理中FIRST集和FOLLOW集的求法

iylei 948

如何求First集与Follow集(超详细)

如何求First集与Follow集 已知文法如下,求First集与Follow集 G[E]:E→TE′E′→+TE′∣εT→FT′T′→∗FT′∣εF→(E)∣i G[E]: E{\rightarrow} TE' \\ {\quad\quad\quad\quad\quad}E'{\rightarrow}+TE'|\varepsilon \\ {\quad\quad\quad}T{\rightarrow}FT'\\ {\quad\quad\quad\quad\quad}T'{\rightarrow}*

RENSRM的博客 6万+

编译原理实验 求first集和follow集 代码

输入任意的上下文无关文法,输出所输入的上下文无关文法一切非终结符的first集合和follow集合

4.编译原理 FIRST集 和 FOLLOW集 的求法

文字定义: FOLLOW(A)集合是​ 所有紧跟A之后的终结符 或 # 所组成的集合(#是句尾的标志),称FOLLOW(A)是A的随符集 下面直接介绍规范的求法(这个文法必须消除左递归和提取公共左因子) 计算所有非终结符号A的follow(A)集合时, 不断应用 下面的规则, 直到再没有 新的终结符号可以被加入到任意的follow集合中为止。 ( 1 )若S是文法的开始符号,则将 # 放到follow(S)中。 ( 2 )如果存在一个产生式A→αBβ,那么first(β)中除ε之外的所有符号都在fo

你说的白是什么白_ 1万+

Debian 12 安装nodejs(包括node、npm、npx、yarn、pnpm、cnpm、bun)

【代码】Debian 12 安装nodejs。

mirana的专栏 8005

抄表程序员的DLMS/COSEM协议实战:从抓包到解析,手把手教你读懂IEC62056报文

本文深入解析DLMS/COSEM协议在智能电表通信中的应用,从报文捕获到数据解析的全流程实战指南。涵盖HDLC帧解析、应用层连接建立、数据请求/响应解码等核心内容,并提供Wireshark配置、OBIS代码速查表等实用工具,帮助开发者快速掌握IEC62056标准下的电能表通信技术。

weixin_29178069的博客 299

FIRST集和FOLLOW集的计算

文章目录`FIRST`集的计算计算`FIRST(x)`具体算法计算`$X_21,X_2,X_3,...,X_n$`的`FIRST`集FOLLOW集的计算算法 FIRST集的计算 计算FIRST(x) FIRST(X):可以从X中推导出的所有串首终结符构成的结合。 若$X\Rightarrow^*{\epsilon}$,那么$\epsilon \in FIRST(X)$。 推导过程: (2)...

Meskjei的博客 3057

手把手教你用闲置安卓手机+蓝鲸支付,零成本搞定个人项目自动收款(附私有化部署教程)

本文详细介绍了如何利用闲置安卓手机和蓝鲸支付系统,零成本搭建个人项目自动收款解决方案。通过私有化部署教程,读者可以学习到从手机选择、系统配置到支付渠道对接的全流程,实现安全、高效的收款系统,特别适合个人开发者和小型项目使用。

weixin_29597551的博客 334

FIRST集和 FOLLOW集的计算

文章目录计算文法符号X的FIRST(X)计算非终结符A的FOLLOW(A)表达式文法各产生式的SELECT集预测分析表LL(1)文法的分析方法==预测分析法实现步骤== 计算文法符号X的FIRST(X) FIRST ( X ):可以从X推导出的所有串首终结符构成的集合 如果 X =>* ε,那么 ε∈FIRST ( X ) 如果X是一个终结符或者 X→ε∈P,那么FIRST ( X ) = { X }或者将ε加入到FIRST( X )中 如果X是一个非终结符,且 X→Y1…Yk∈P (k≥1),那么

lseaJK的博客 2584

LPDDR5时序精调:深入解析Read Gate Training的两种模式

本文深入解析了LPDDR5内存中关键的Read Gate Training技术,详细对比了RDQS Toggle Mode(翻转模式)与Enhanced RDQS Mode(增强模式)的工作原理、时序参数及适用场景。文章阐述了在高速数据传输下精准校准时序的必要性,并提供了两种模式的实战选型指南与系统级调试思路,帮助工程师优化内存性能与稳定性。

weixin_29219189的博客 366

tun虚拟网卡没有安装解决之道

目录 描述 过程 一、sstap 会提示你虚拟网卡没有安装; 二、还有会是这样的:病毒和威胁防护中无法启动;引擎不可以用等等,以及会显示需要IT管理员去处理;等等报错的信息; 系统升级地方会显示:Windows Defender Antivirus 的安全智能更新 - KB2267602 (版本 1.305.2147.0) - 错误 0xc8000442 Windows Defender报错; 三、还有就是会出现你搜自己家的WIFI搜不到,电脑端都不会显示WIFI名字; 解决方...

战神/calmness的博客 1万+

如何计算FIRST集和FOLLOW集

编译原理之计算FIRST集合和FOLLOW集合 原创 ...

qq_40804213的博客 4899

Yolo11改进:Block改进|MixDehazeNet,用于图像去雾网络的混合结构块|即插即用|附代码

https://arxiv.org/pdf/2305.17654 图像去雾是低级视觉领域中的一项典型任务。先前的研究验证了大型卷积核和注意力机制在去雾中的有效性。然而,存在两个缺点:引入大型卷积核时容易忽略图像的多尺度特性,而注意力模块的标准串联方式没有充分考虑雾分布的不均匀性。在本文中,我们提出了一种名为混合结构图像去雾网络(MixDehazeNet)的新型框架,该框架解决了上述两个问题。具体而言,它主要由两部分组成:多尺度并行大型卷积核模块和增强并行注意力模块。与单个大型卷积核相比,多尺度的并行大型卷积

m0_47867638的博客 1270

FIRST和FOLLOW集的计算

最近马上要步入考试周了,编译原理的这个Follow集一直令我头大啊,今天百度了下下,找到一篇文章,看了以后我瞬间就明白了如何求解Follow集~~哈哈,如果你也不知道如何求解Follow集,请看看下面的这篇日志吧 ,其实我发现,对于Follow集,我一开始不理解的地方就在那个Vn能推出ε的时候,就需要再往后考虑一个字符:) 文法: S→ABc A→a|ε B→b|ε First集合...

Firewine 的博客 4509

单片机:实现简单的时间片轮询调度(附完整源码)

单片机:实现简单的时间片轮询调度(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 383

学Simulink--环境感知场景实例:基于Simulink的毫米波雷达多目标跟踪仿真

本文介绍了基于Simulink的毫米波雷达多目标跟踪仿真系统,重点分析了FMCW雷达信号处理流程(Range/Doppler FFT、CFAR检测)和多目标跟踪算法(JPDA数据关联、EKF状态估计)。通过构建城市道路交叉场景,验证了系统在跟踪精度(位置误差<0.2m)、实时性(单帧处理24ms)和鲁棒性(ID切换率<5%)方面的性能优势,并提出了UKF滤波、多传感器融合等优化方向。该仿真系统为自动驾驶环境感知提供了实用的毫米波雷达跟踪解决方案。

amy_mhd的博客 92

计算FIRST集、FOLLOW集和构造LL(1)分析表

基本思路 数据结构 HashMap:用来实现非终结符和对应FIRST和FOLLOW集的映射 HashSet<Character>:用来保存的FIRST和FOLLOW集的集合 ArrayList<String>:用来保存将产生式根据|分割后各个候选式 源代码 package compile; import java.util.*; import java.util.Map.Entry; public class test { // 文法开始符 public char S

weixin_45369645的博客 1895

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

首先为了得出了这个可以帮助我们大大提升效率,不需要再编译中回溯的预测分析表。接着进行文法匹配(分析)。

记录学习痕迹的公众号:Piper蛋窝 2308

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

FIRST集和FOLLOW集的定义和计算方法

原文地址: http://www.cnblogs.com/yangnas/archive/2010/11/20/1882844.html FIRST集和FOLLOW集的定义和计算方法 FIRST集的定义: 如果α是任意的文法符号串,则我们定义FIRST(α)是从α推导出的串的开始符号的终结符集合,即 FIRST(α)={a|α a… ,a是终结符}。如果α ε,则...

weixin_34392906的博客 801

LL(1)文法中FIRST集和FOLLOW集的计算方法

预测分析法的白话文描述

suliangkuanjiayou的博客 8480

编程实现计算FIRST集和FOLLOW集C++之(一)处理候选式:多个右部

当前目录下有这三个文件houxuanshi_processed.txt houxuanshi.txt main.cpphouxuanshi.txt的内容E->TE' E'->+TE'|ε T->FT' T'->*FT|ε F->(E)|id开始houxuanshi_processed.txt 内容是空的或者直接没有这个文件。 main.cpp#include<fstream> #incl

珍惜时间 5938

First集和Follow集,FirstVt集和LastVt集的计算

转载自:http://dongtq2010.blog.163.com/blog/static/1750224812011520113332714/ 学编译原理的时候,印象最深的莫过于这四个集合了,而且也十分为之纠结。 首先要知道First和Follow是一对,而Firstvt和Lastvt是一对。 然后要知道这两对都是干什么的。 First和Follow是为了画预测分析表的(在LL(1)分

Chen_dSir的博客 5349
上一篇: Windows10安装JDK的环境变量设置javac不是内部命令或外部命令
下一篇: 从键盘输入n名学生数据,转存到磁盘文件,然后回显
Yan_Less
博客等级 码龄9年 109粉丝 27原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值