编译原理 first集 follow集 实例 解析

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 编译原理 first集 follow集 实例 解析

编译原理只看书的话还是很难学,上课听老师讲的蛮好,可忘得也很快,再复习看书的时候已然忘记老师当时是怎么讲的了QAQ...

现在只能在网上找教程自学一下喽:先看看为什么要有first集和follow集:

efcdc2d50a1e062e0af23224ab319739_70.png

0db49c82f5b77f943749d38ccf043f57_70.png

8ac5e1056292555162374f0db944962f_70.png      

e1bc5d0270ba9dcdaa9dc06bcfdf5da8_70.png

55a1c45cf1fa17dcd9b9f13ac6f5723b_70.png

      这个很简单了,x是终结符,那它的FIRST集肯定也是x了。

82c171ca180e5006365474c07724f155_70.png

      举个栗子::Y->b|ε,那么First (Y)={b, ε}(b是终结符)

14d6e3b6780b173e27e98520ee2cc760_70.png

       举个栗子:Y->b|ε,那么First (Y)={b, ε}(b是终结符),X->Yabcd|ε,则FIRST(X) = (First(Y)--{ε})∪ {ε}(这

       里的{ε}是由法则2 3222cdf7119ba4cbd405574da971ab79_70.png 推导出来 )

  69a8da55f1783589ce69e9f6fec1d0bb_70.png892bfb8e852c53000633940e5c5c1dab_70.pnga0111670b283ad2372ccd58a001f3d70_70.png

        举个栗子:

1、文法G [S]为:

SAB                                  First(S) =(First(A)-{ε})∪(First (B)-{ε}) ∪{ε}∪{b}

SbC                                   因为A的first有ε,B的first有ε,S->AB,所以是First(A)-{ε})∪(First (B)-{ε}) ∪{ε}
A→ε         然后S->bC由法则2得,所以再加一个b就是First(A)-{ε})∪(First(B)-{ε})∪{ε}
Ab                                    ∪{b}

B→ε          由之前的法则:First (A)={b, ε}First (B)={a, ε}所以First(S) ={a,b,ε}

BaD

CAD

Cb

DaS

Dc

bb68ccc77056e98f6589da2afc7fc936_70.png

   1ee9f73b974ad6cd4fe62aa04820b05d_70.png

   FOLLOW集就是找后面有没有能处理这个终结符的非终结符,如果有就继续,没有则报错!所以此处我们的视角和求解first集的视角有所不同,此时我们应该向后看,找后面的。

af43412167c4f3f32c7645a51fd43b23_70.png

f7b0ba62653ac89458e9f9000b2030eb_70.png

       这个不用多说,初始规定就是这样。

cfba42b1325d86efadfe265d2cee2779_70.png

       举个栗子:文法G [E]为:    

                  E   →  TE'          因为E是文法的识别符所以把#加入FOLLOW(E),又由规则F  →  (E) | i 得E

                  E'  →  +TE' | ε    的后跟符号  )(  first(')') = {)}  ) ,所以,FOLLOW(E)={ #,) };

                  T   →  FT'

                  T'  →  *FT' | ε

                  F  →  (E) | i

a9530a001bc680c522d1d159d24dcad6_70.png

         举个栗子:文法G [E]为:    

                  E   →  TE'          先给出它们的FIRST集:(求解方法见上面FIRST集的求解)

                  E'  →  +TE' | ε            FIRST(F)={ (,i }

                  T   →  FT'                    FIRST(T’)={ *,ε }

                  T'  →  *FT' | ε             FIRST(T) ={ (,i }

                  F  →  (E) | i                 FIRST(E’)={ +,ε }

                                                  FIRST(E)={ (,i }

FOLLOW集的求解:因为E是文法的识别符所以把#加入FOLLOW(E),又由规则F  →  (E) | i 得E的后跟符号),所以,FOLLOW(E)={ #,) };

FOLLOW(E’)={ #,) }    ∵E → TE’   follow集的目的是为了在E'无法处理当前终结符的时候,判断E'之后有没有能处理该终结符的非终结符,    ∴FOLLOW(E)加入 FOLLOW(E')

FOLLOW(T)={+,),#}      ∵E'→ +TE’  ∴FIRST(E’)-{ε}加入FOLLOW(T); 又E’→ε,     ∴ FOLLOW(E’)加入FOLLOW(T)此处如果把E'->+TE'看为A->aBb,b=>ε的话,则Follow(E')加入Follow(E')中,这样没有任何意义。

FOLLOW(T’)= FOLLOW(T)= {+,),#}      ∵T → FT’   ∴ FOLLOW(T)加入FOLLOW(T’)
FOLLOW(F)={*,+,),#}   ∵T → FT’   ∴ FOLLOW(F)=FIRST(T’)-{ε} ; 又T’→ε ∴ FOLLOW(T)加入FOLLOW(F)

       


AIEarth是一个由众多领域内专家博主共同打造的学术平台,旨在建设一个拥抱智慧未来的学术殿堂!【平台地址:https://devpress.csdn.net/aiearth】 很高兴认识你!加入我们共同进步!

目录
相关文章
|
17天前
|
弹性计算 缓存 应用服务中间件
阿里云服务器2核2G99元和2核4G199元实例规格性能及适用场景解析
2024年阿里云推出了两款云服务器,2核2G3M带宽40G ESSD Entry盘价格只要99元1年,2核4G5M带宽80G ESSD Entry盘价格只要199元1年,这两款云服务器的活动截止日期为2026年3月31日,活动期间新购、续费同价。那么这两款云服务器怎么样呢?可以用来做什么?本文将对这两款云服务器进行深度解析,包括配置介绍、实例规格、使用场景以及购买建议,以供选择参考。
阿里云服务器2核2G99元和2核4G199元实例规格性能及适用场景解析
|
20天前
|
存储 机器学习/深度学习 编解码
深度解析阿里云服务器计算型c7与计算型c8y实例区别与选择参考
在阿里云提供的众多计算型云服务器实例规格中,计算型c7和计算型c8y实例是两款备受关注的云服务器规格。主要适用于网站应用、批量计算、视频编码等各种类型和规模的企业级应用,对于初次接触阿里云服务器的新手用户来说,可能并不是很清楚他们之间的区别,因此可能不知道怎么选择。本文将从实例的架构、处理器、存储与网络能力、使用场景、指标数据、收费标准以及实时活动价格等多个维度,对计算型c7和计算型c8y实例进行深度解析,以供参考和选择。
深度解析阿里云服务器计算型c7与计算型c8y实例区别与选择参考
|
7天前
|
数据采集 前端开发 JavaScript
python语言通过简单爬虫实例了解文本解析与读写
python|通过一个简单爬虫实例简单了解文本解析与读写
|
3天前
|
Unix Shell Perl
技术心得:实例解析shell子进程(subshell)
技术心得:实例解析shell子进程(subshell)
|
4天前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
13 0
|
4天前
|
域名解析 网络协议 程序员
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
程序员必知:【转】adns解析库——域名解析实例(C++、linux)
10 0
|
2月前
|
存储 Java
JAVA中的变量:深入解析与实例
JAVA中的变量:深入解析与实例
39 3
|
11天前
|
机器学习/深度学习 文字识别 算法
多模态大模型在文档处理的实例解析
多模态大模型在文档处理的实例解析
31 0
|
11天前
|
机器学习/深度学习 编解码 计算机视觉
【深度学习】探秘PSD:合成到真实去雾框架的实例解析
【深度学习】探秘PSD:合成到真实去雾框架的实例解析
22 0
|
2月前
|
存储 C语言 索引
C语言字符数组深入解析与应用实例
C语言字符数组深入解析与应用实例
21 0

推荐镜像

更多